问题描述
我正在尝试实现一个简单的动态编程函数,给定一个硬币类型列表和一个整数数量,计算制作一个硬币所需的最小硬币数量给定的金额。例如硬币 = [1,2,5];对于 5 + 5 + 1 种硬币类型的可能性,amount = 11 给出了 3 的输出。
def coinChange(coins,amount,dp = {}):
if amount in dp:
print('from mem',dp)
return dp[amount]
dp[0] = 0
for c in coins:
dp[c] = 1
chk = [(amount - i) for i in coins if (amount-i) > 0]
out = list(map(lambda x:coinChange(coins,x,dp),chk))
out2 = [i for i in out if i >= 0]
print(amount,chk,out,out2,dp)
if out2:
dp[amount] = 1 + min(out2)
else:
dp[amount] = -1
return dp[amount]
当调用这个函数时,第一次调用给出了预期的完整代码运行。但是,后续调用会引用该函数的原始 dp 变量并从中返回值。
我知道这个变量 dp 应该在函数退出后内存不足。请帮助理解。
输入: ''' c = [1,5] 一 = 11 coinChange(c,a) '''
第二次调用输出: 从内存 {0: 0,1: 1,2: 1,5: 1,3: 2,4: 2,6: 2,7: 2,8: 3,9: 3,10: 2,11: 3 } 3
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)