我一直在审查一些动态编程问题,而且我很难绕过一些代码来寻找最小数量的硬币来进行更改.
假设我们有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]
Run Code Online (Sandbox Code Playgroud)
如果有人能帮助我绕过这段代码(第4行是我开始感到困惑的地方),那就太好了.谢谢!