题目

今有面值为 1、5、11 元的硬币各无限枚。
想要凑出 n 元,问需要的最少硬币数量。
查看详情
话不多说先看代码

代码

复制代码
coins = [1, 5, 11] def minCoinRounding(number, coin): eachNumber = [float("inf")]*(number - 1) coinNumber[0] = 0 value = 0 for value in range(1, number - 1): for coinValue in coin: temp = value - coinValue if temp >= 0: eachNumber[value] = min(coinNumber[value], coinNumber[value - coinValue] + 1) return coinNumber[value] print(minCoinRounding(300, coins))

解释


通过代码可以看出,通过从1到目标数值不停与硬币的面额相比较从而获取最少的硬币数量。

value coinNumber
1 1
2 2
... ...
4 4
5 1
6 2
7 3
... ...
9 5
10 2
11 1
12 2
... ...