使欧元硬币子集的贪婪算法失败

时间:2019-02-18 01:11:44

标签: algorithm greedy computer-science-theory

贪心找零算法是一种通过选择可用币种的最高面额直到达到其尝试找零的数量来进行找零的算法。令人惊讶的是,该算法实际上可以最有效地进行美国和欧元硬币面额的更改!

但是,贪婪算法有时无法进行更改。假设我们有面额[25,15,1],并试图赚31美分。贪心算法会选择25,1,1,1,1,1,1(7个硬币),而31美分实际上可以做成15,15,1(3个硬币)。

我想知道的是,是否存在一种使贪婪算法对包含面额1的欧元硬币子集(欧元硬币的列表为1,2,5,10,20,50,100,200)失败的方法。尽管我可以使贪婪算法使具有其他值的子集失败,但对于欧元硬币的子集,我似乎无法使其失败。

一些资源说,只要最高元素加最低元素少于第二高元素的两倍,贪婪算法就会失败(因此在上面的示例中,25 + 1 <15 + 15),但是这是不可能的可以用一部分欧元硬币来实现这一点。

1 个答案:

答案 0 :(得分:1)

尝试用1、20、50达到60。