Add the section of summary of greedy.

This commit is contained in:
krahets
2023-07-21 22:54:26 +08:00
parent e114ea2b65
commit c9daeeff2d
3 changed files with 15 additions and 3 deletions

View File

@@ -13,8 +13,6 @@
给定 $n$ 种硬币,第 $i$ 个硬币的面值为 $coins[i - 1]$ ,目标金额为 $amt$ ,每种硬币可以重复选取,问能够凑出目标金额的最少硬币个数。如果无法凑出目标金额则返回 $-1$ 。
贪心算法会迭代地做出一个又一个的贪心选择,每轮都将问题转化成一个规模更小的子问题,直到问题被解决。
这道题的贪心策略在生活中很常见:给定目标金额,**我们贪心地选择不大于且最接近它的硬币**,不断循环该步骤,直至凑出目标金额为止。
![零钱兑换的贪心策略](greedy_algorithm.assets/coin_change_greedy_strategy.png)
@@ -110,7 +108,7 @@
那么问题来了,什么样的问题适合用贪心算法求解呢?或者说,贪心算法在什么情况下可以保证找到最优解?
相较于动态规划,贪心算法的使用条件更加苛刻,其主要关问题的两个性质:
相较于动态规划,贪心算法的使用条件更加苛刻,其主要关问题的两个性质:
- **贪心选择性质**:只有当局部最优选择始终可以导致全局最优解时,贪心算法才能保证得到最优解。
- **最优子结构**:原问题的最优解包含子问题的最优解。值得注意的是,一些问题的最优子结构并不明显,但仍然可使用贪心算法解决。