给定一个正整数,我们可以定义出下面公式:
N = a[1] + a[2] + a[3] + ... +a[m];
a[i] > 0, 1<= m <= N;
对于一个正整数,求满足上面公式所有算式组合,如对于整数4:
4 = 4;
4 = 3 + 1;
4 = 2 + 2;
4 = 2 + 1 + 1;
4 = 1 + 1 + 1 + 1;
所以上面结果是5。
注意:对于"4 = 3 + 1"和 "4 = 1+ 3",这两处实际上是同一种组合。
题解:采用动态规划法求f(n, n),利用二维数组求f(n, m)。这个函数的意思就是将n划分为最多m个整数有多少种组合。
根据n和m的关系,考虑下面几种情况:
(1)当n=1或者m=1时,只有一种划分。例如:将1划分为最多2个数只能是1=1或者将5划分为最多1个数5=5。
(2)当n=m时,根据划分中是否包含n,可以分为两种情况:
划分中包含n的情况,只有一个。例如:将4划分为4=1+1+1+1此时只有一种划分。
划分中不包含n的情况,此时划分的个数最多就是n-1;即f(n,n-1)。
(3)当n<m时&#x