此硬币找零算法如何工作?

时间:2018-11-04 05:41:15

标签: python-3.x

这是从高到低排序的硬币面额的列表。

coinage = [500, 200, 100, 50, 20, 10, 5, 1]

,金额为 445 。该函数的输出为

[(2, 200), (2, 20), (1, 5)]

我对算法真的很困惑。如何运作?

1 个答案:

答案 0 :(得分:2)

您可以使用类似这样的东西。由于coinage列表已经反向排序,因此事情变得容易。您只需要遍历列表并执行逻辑:

coinage = [500, 200, 100, 50, 20, 10, 5, 1]
money = 445

sum, lst = 0, []
for x in coinage:
    if x <= money:
        lst.append((money // x, x))
        sum = (money // x) * x
        money -= sum

print(lst)
# [(2, 200), (2, 20), (1, 5)]