【发布时间】:2022-07-01 01:16:06
【问题描述】:
我知道此解决方案的最佳问题是使用动态规划。但是,我想尝试这种蛮力回溯方法,我从金额中减去硬币并尝试找到与该金额匹配的组合,并在金额为 0 时找到组合数组长度的最小值。 但是,此递归调用无法正确检查所有组合。请以尽可能少的更改来编辑我的代码,因为这将帮助我了解在提出回溯解决方案时我做错了什么。 这是我的代码-
class Solution:
def coinChange(self, coins: List[int], amount: int) -> int:
if amount == 0:
return 0
output = amount+1
def backtrack(cur,arr):
if cur == 0:
print("happening")
nonlocal output
output = min(output,len(arr))
return
if cur<0:
return
for c in coins:
print(cur,c,arr)
if (cur-c) >=0:
cur-=c
arr.append(c)
backtrack(cur,arr)
arr.pop()
else:
continue
arr = []
backtrack(amount,arr)
return output
【问题讨论】:
标签: python backtracking recursive-backtracking