这是从高到低排序的硬币面额的列表。
coinage = [500, 200, 100, 50, 20, 10, 5, 1]
,金额为 445 。该函数的输出为
[(2, 200), (2, 20), (1, 5)]
我对算法真的很困惑。如何运作?
答案 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)]