题目
今有面值为 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 |
... | ... |