我一直在审查一些动态编程问题,并且我很难围绕一些代码来寻找最少数量的硬币来进行更改。
假设我们有价值 25、10 和 1 的硬币,我们正在找零 30。贪婪将返回 25 和 5(1),而最优解将返回 3(10)。这是书中关于这个问题的代码:
def dpMakeChange(coinValueList,change,minCoins):
for cents in range(change+1):
coinCount = cents
for j in [c for c in coinValueList if c <= cents]:
if minCoins[cents-j] + 1 < coinCount:
coinCount = minCoins[cents-j]+1
minCoins[cents] = coinCount
return minCoins[change]
如果有人能帮助我理解这段代码(第 4 行是我开始感到困惑的地方),那就太好了。谢谢!