问题是 here
假设我只有25美分,10美分和4美分的硬币,而我的总金额是41.使用贪婪,我会选择25美分然后是10美分,然后剩下的6美分不能做成。
所以我的问题是,在这种情况下贪婪会告诉我没有解决方案吗?
答案 0 :(得分:3)
看起来你的问题在Greedy算法维基中得到了解答:http://en.wikipedia.org/wiki/Greedy_algorithm#Cases_of_failure
想象一下硬币的例子只有25美分,10美分和4美分的硬币。贪婪的算法无法改变41美分,因为在承诺使用一个25美分硬币和一个10美分硬币之后,不可能使用4美分硬币作为余额6美分,而一个人或者更复杂的算法可以使用一个25美分硬币和四个4美分硬币进行41美分的更改。
答案 1 :(得分:1)
链接中提到的贪婪算法假设存在单位硬币。否则有一些它根本无法处理的整数金额。
关于最优性 - 如上所述,它取决于可用的硬币。例如,对于{10,5,1},贪婪算法总是最优的(即返回要使用的最小硬币数)。对于{1,3,4},贪婪算法不保证是最优的(它返回6 = 4 + 1 + 1而不是6 = 3 + 3)。
答案 2 :(得分:1)
似乎贪婪算法并不总是最好的,这个例子用来说明什么时候它不起作用
维基百科中的