我很难理解这个问题背后的逻辑, 这是经典的动态规划问题
Coin Change is the problem of finding the number
of ways of making changes for a particular amount of cents, n,
using a given set of denominations d1,d2,..dm;
我知道递归是如何起作用的,就像拿硬币一样。但是我不明白两个州之间的'+'做什么。
例如
C(N,m)=C(N,m-1)+C(N-dm,m)
^
|
问题可能是愚蠢的,但我仍然想知道,以便我可以更好地理解。谢谢
答案 0 :(得分:1)
好吧,你还没有写好你的州! 硬币变化:
设C(i,j)表示仅使用i个硬币(从i到1)形成j作为总和的方式的数量。
现在要获得一个递归函数,你必须定义转换或改变状态,或者只是用较低值来表达给定的表达式!!
有两种独立的方式可以代表
这种状态1)让我们拿起第i个硬币,然后会发生什么?如果不允许重复,我需要使用i-1硬币进行面额j-Denomination [i]。 即C(i,j)= C(i-1,j-Denominations [i])
但等等,我们错过了一些方法,即当我们不拿现在的硬币时
2)C(i,j)= C(i-1,j)
现在,因为它们都是独立且详尽的,所以这两种状态构成了总数的方式!!!
C(I,J)= C(I-1,J)+ C(I-1,J-面额[I])
我会在重复允许的情况下重复发生!