【发布时间】:2020-09-24 23:59:59
【问题描述】:
硬币找零问题的简单 DP 解法使用大小为 SUM 的一维数组,并将其从 0 填充到 SUM。基于重复次数 NUMBER_OF_COINS = min(array[sum-coin1]+1, array[sum-coin2]...)。 我写的代码是这样的。
def DynamicChange(money, coins):
if money<=0:
return 0
arr = [0]*(money+1)
for m in range(1, money+1):
arr[m] = 9999999
for coin in coins:
if m>= coin:
if arr[m-coin]+1<arr[m]:
arr[m] = arr[m-coin]+1
return arr[money]
我遇到了一个有趣的问题,即将数组的大小减少为硬币的数量。无法想出相同的解决方案。我们怎样才能将数组的大小减小到硬币的数量,仍然得到硬币的最小数量?
【问题讨论】:
-
恕我直言,动态分段树仅用于使用过的硬币怎么样?
标签: algorithm dynamic-programming