对于硬币兑换问题,我们通常采用以下递推关系:
P是我们需要兑换的总金额,d_i是可用的硬币)
但我们不能这样做吗:
V是给定的可用的已排序硬币集,ij是其下标,Vj是给定的最高值硬币)

C[p,Vi,j] = C[p,Vi,j-1]     if Vj > p
          = C[p-Vj,Vi,j] + 1  if Vj <=p

我写的有什么问题吗?虽然解决方案不是动态的,但不是更有效吗?

最佳答案

考虑P = 6, V = {4, 3, 1}。你会选择4, 1, 1而不是3, 3,因此3硬币而不是最佳的2

关于algorithm - 硬币找零(动态编程),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13075242/

10-12 19:38