贪心算法的核心思想
-
贪心算法(Greedy)
在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,它所做出的仅仅是在某种意义上的局部最优解。
贪心算法设计的关键是贪心策略的选择。必须注意的是,贪心算法不是对所有问题都能得到整体最优解,选择的贪心策略必须具备无后效性。 -
基本思路
- 建立数学模型来描述问题。
- 一般结合分治的思想,把求解的问题分成若干个子问题。
- 对每一子问题求解,得到子问题的局部最优解。
- 把子问题的解,也就是局部最优解,合成原来解问题的一个解(可能并非全局最优,需要无后效性)。
贪心算法存在的问题:
不能保证求得的最后解是最佳的
不能用来求最大值或最小值的问题
只能求满足某些约束条件的可行解的范围
贪心算法的应用:
比如:哈夫曼编码、图算法中的最小生成树算法、单元最短路径等都是运用到
其核心的思想如下例题解析的:
官方当中其实是给了详细的题解,但是在这里的话,还是按照贪心的核心思想去写这些
1、需要建立数学模型
我们知道,当给5¥,我们直接的接受接好的
10¥ 的时候,需要找回5¥,若有则找回,否则的话就直接的返回false就好的
20¥的时候,需要找回15¥,存在两种方式,其一就是一张10和5或者是三张5元的,如果两种方式都没有的话,则就无法进行找回的