我很难找到许多方法来从包含硬币的数组中获取给定数字的总和。例如:
硬币:{2,3,5,7}
总和:8
总计方式:6->(2 + 2 + 2 + 2),(2 + 3 + 3),(3 + 2 + 3),(3 + 3 + 2),(3 + 5)和(5 + 3)。
我有使用dp伪代码的解决方案:
build an array ar of size "sum"
ar[0]=1
for i = 1 to sum do:
ar[i]=ar[i-2]+ar[i-3]+ar[i-5]+ar[i-7]
return ar[sum]
如前所述,此代码可以正常工作,但是我在其中运行的平台的总和可能高达10 19 ,并且可以预期,它使我超时。还有其他方法可以解决吗?我什至尝试减小超过大小i-largest value in coins
的数组的大小。但这也超时了。