def dpMakeChange(coinValueList, change, minCoins, coinsUsed):
for cents in range(1, change + 1):
# 初始化一个最大值
coinCount = cents
# 初始化一下新加的那个硬币
newCoin = 1
for j in [c for c in coinValueList if c <= cents]:
if minCoins[cents - j] + 1 < coinCount:
coinCount = minCoins[cents - j] + 1
newCoin = j # 对应最小数量,所减的硬币
minCoins[cents] = coinCount
coinsUsed[cents] = newCoin
return minCoins[change]
def printCoins(coinsUsed, change):
coin = change
while coin > 0:
thisCoin = coinsUsed[coin]
print(thisCoin)
coin -= thisCoin
amnt = 63
clist = [1, 5, 10, 21, 25]
coinsUsed = [0] * (amnt + 1)
coinCount = [0] * (amnt + 1)
print("Making change for", amnt, "requires", end = ' ')
print(dpMakeChange(clist, amnt, coinCount, coinsUsed), "coins")
print("They are:")
printCoins(coinsUsed, amnt)
print("The used list is as follow:")
print(coinsUsed)
dp 找零兑换 代码
最新推荐文章于 2025-03-04 22:43:14 发布