如何贪婪地在这个硬币改变案件中工作

时间:2014-01-15 11:05:10

标签: algorithm greedy

问题是 here

假设我只有25美分,10美分和4美分的硬币,而我的总金额是41.使用贪婪,我会选择25美分然后是10美分,然后剩下的6美分不能做成。

所以我的问题是,在这种情况下贪婪会告诉我没有解决方案吗?

3 个答案:

答案 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)

似乎贪婪算法并不总是最好的,这个例子用来说明什么时候它不起作用

维基百科中的

See example