update readme.md

This commit is contained in:
ranwenjie
2021-11-07 00:16:03 +08:00
parent 3a88447c9d
commit 00136b91f9
6 changed files with 68 additions and 17 deletions
+6 -6
View File
@@ -3,13 +3,14 @@
详细介绍每一种算法设计的思路,并为每种方法给出一个经典案例的详细解读,总结对应设计思路,最后给出其它案例,以供参考。
* [递归](递归.md)
* [分治算法](分治算法.md)
* [动态规划](动态规划.md)
* [回溯法](回溯法.md)
* [迭代法](迭代法.md)
* [穷举搜索法](穷举搜索法.md)
* [动态规划](动态规划.md)
* [贪心算法](贪心算法.md)
* [回溯法](回溯法.md)
* [分治算法](分治算法.md)
* [递归](递归.md)
* [贪心算法](贪心算法.md)
@@ -28,7 +29,6 @@
## 参考
《算法设计与分析基础》 Anany Levitin
http://www.chinaunix.net/old_jh/23/437639.html
+8 -7
View File
@@ -5,12 +5,13 @@
分治算法常用`递归`实现
1) 问题缩小的小规模可以很容易解决
2) 问题可以分解为规模较小相同问题
3) 子问题的解可以合并为该问题的解
4) 各个子问题相互独立,(如果这条不满足,转为`动态规划`求解)
1)问题缩小的小规模可以很容易解决
2)问题可以分解为规模较小相同问题
3)子问题的解可以合并为该问题的解
4)各个子问题相互独立,(如果这条不满足,转为`动态规划`求解)
分治法的步骤:
1. 分解
2. 解决
3. 合并
@@ -24,6 +25,6 @@
#### 其它案例
快速排序
归并排序
最大子数组和
* 快速排序
* [归并排序](../6%20Sort/README.md)
* 最大子数组和
+2 -1
View File
@@ -49,7 +49,8 @@ DP通常基于一个递推公式及一个(或多个)初始状态,当前子问
### DP VS 分治法
与分治法不同的是,适合于用动态规划求解的问题,经分解得到子问题往往不是互相独立的。若用分治法来解这类问题,则分解得到的子问题数目太多,有些子问题被重复计算了很多次。如果我们能够保存已解决的子问题的答案,而在需要时再找出已求得的答案,这样就可以避免大量的重复计算,节省时间。我们可以用一个表来记录所有已解的子问题的答案。
与[分治法](分治算法.md)不同的是,适合于用动态规划求解的问题,经分解得到子问题往往不是互相独立的。
若用分治法来解这类问题,则分解得到的子问题数目太多,有些子问题被重复计算了很多次。如果我们能够保存已解决的子问题的答案,而在需要时再找出已求得的答案,这样就可以避免大量的重复计算,节省时间。我们可以用一个表来记录所有已解的子问题的答案。
+1 -1
View File
@@ -5,7 +5,7 @@
在 `递推` 阶段,将大的问题分解成小的问题
在 `回归` 阶段,获得最简单问题的解后,逐级返回,依次得到稍微复杂情况的解,知道获得最终的结果
1) 确定递归公式
1) 确定递归公式 , 比如 斐波那契数列 问题中的 `fib(n)=fib(n-1)+fib(n-2)`
2) 确定边界条件
> 自顶向下的递归,自底向上是迭代