def dpMakeChange(coinValueList, change, minCoins):
for cents in range(change+1):
# 一开始以一元钱为最起始单位,比如七元钱要七个一元,五元钱要五个一元
coincount = cents
# 然后再小于我们所需金额的零钱里寻找
# 比如我们有1 3 5的面值,对4找零,则列表里面是[1, 3]
for j in [c for c in coinValueList if c <= cents]:
# 如果以前的面值比用一分钱的数量要少
# 则赋值
"""
比如我们4元钱可以用1元和3元来找
我们进入循环的时候,默认coincount是都用一元钱,也就是4元钱需要4个一元钱
接着我们再找,列表里有个3,因此我们会想能不能用3元去代替,也就是用3元钱所需找零量再加个1
然后进入一个if语句,判断是否比之前coincount小,如果是,则把值记录到minCoins里面
"""
if minCoins[cents-j] + 1 < coincount:
coincount = minCoins[cents-j] + 1
minCoins[cents] = coincount
return minCoins[change]
print(dpMakeChange([1, 2], 4, [0]*12))
Python动态规划找零
最新推荐文章于 2023-08-17 23:25:37 发布