整数划分问题
这个问题在网上其实有好多博客、文章,本人认为讲的都稍有粗略,这篇文章是个人写的认为稍微详细一点的!!
将正整数n表示为一系列正整数之和,
n=n1+n2+n3+n4+......+nk (其中,n1>=n2>=n3>=n4........>=nk>0,k>=1)
正整数n的这种表示成为正整数n的划分。正整数n的不同划分个数成为正整数n的划分数,记作p(n)。
例如,正整数6有如下11种划分:
6;
5+1;
4+2,4+1+1;
3+3,3+2+1,3+1+1+1;
2+2+2,2+2+1+1,2+1+1+1+1;
1+1+1+1+1+1;
其实这种问题可以认为是把n划分为 加数小于或等于某个数的划分,在这里把这个数成为m。例如,对6的划分可以认作是将6划分为加数小于等于6的划分,因为6的加数确实小于等于6,为什么要引入这个m呢,是因为我们发现,从这个角度思考,比较容易求解。我们将划分的种类数记为q(n,m)
在递归里,要对形参进行判断
(1)当n=1时 q(1,m):表示是对1的划分,那么只有一种划分方式 1
(2)当m=1时q(n,1):当m&#