【发布时间】:2021-08-06 01:42:50
【问题描述】:
为什么我的代码在硬币为 [1,2,3] 时在 4 次中打印出 7 次“找到解决方案”,美分的变化为 4。应该只有 4 个可能的解决方案。我在这里做错了什么?
def coinChange(nCents, coins, total):
if (total == nCents):
print("Found solution")
return
if (total > nCents):
return
if (total < nCents):
for i in range(len(coins)):
coinChange(nCents, coins, total+coins[i])
coins = [1,2,3]
coinChange(4, coins, 0)
【问题讨论】:
-
首先,您应该在找到每个解决方案时将其打印出来。其次,您可能会得到解决方案的排列:
[3,1], [1,3], [2,2], [2,1,1],[1,2,1],[1,1,2],[1,1,1,1],因此您应该对解决方案进行排序,或者永远不要使用大于最后添加的硬币的硬币。 -
对不起,我很困惑不应该添加的下一个硬币更大所以列表将被排序?
-
你应该从最适合的硬币开始,然后往下走。
标签: python algorithm recursion