我试图理解我作为我的硬件问题的一部分,但它看起来真的像中国......
假设我们有硬币x_1, x_2, x_3, ... x_n
。总是x_1 = 1
。
我们想用最少数量的硬币给一定数量的钱。
然后我们使用动态编程。
现在我不理解这一点 - c(i,j) = min { c(i-1,j), 1+c(i,j-x_i) }
其中c(i,j)
是返回金额j
的最小金额。
答案 0 :(得分:1)
c(i,j-x_i)
是仅使用硬币j-x_i
获得值i,i+1,...,n
的最小硬币数量(这是归纳假设,这是递归公式确保我们的)。
因此,1+c(i,j-x_i)
是使用给定的一组硬币获得j-x_i
的最小方法+一个价值x_i
的额外硬币,我们决定使用它。
由此,c(i,j) = min { c(i-1,j), 1+c(i,j-x_i) }
实际上是在详尽地选择“最好的”:
采取最低限度的措施可以确保我们(因为它在所有可能性方面都是彻底完成的)c(i,j)
是最小的。