整数划分

来源:互联网 发布:贷贷兴隆网络贷款 编辑:程序博客网 时间:2024/06/06 07:26

什么是整数划分?
整数划分,是指把一个正整数n写成如下形式:
n=m1+m2+…+mi; (其中mi为正整数,并且1 <= mi <= n),则{m1,m2,…,mi}为n的一个划分。
如果{m1,m2,…,mi}中的最大值不超过m,即max(m1,m2,…,mi)<=m,则称它属于n的一个m划分。这里我们记n的m划分的个数为f(n,m);

例如:当n=4时,他有5个划分,{4},{3,1},{2,2},{2,1,1},{1,1,1,1};

注意4=1+3 和 4=3+1被认为是同一个划分。

问题:求出n的所有划分个数,即f(n, n)。


下面我们考虑求f(n,m)的方法;

根据n和m的关系,考虑以下几种情况:
+ 1、当n=1时,不论m的值为多少(m>0),只有一种划分即{1};
+ 2、当m=1时,不论n的值为多少,只有一种划分即n个1,{1,1,1,…,1};
+ 3、当n=m时,根据划分中是否包含n,可以分为两种情况:
+ 划分中包含n的情况,只有一个即{n};
+ 划分中不包含n的情况,这时划分中最大的数字也一定比n小,即n的所有(n-1)划分。
因此 f(n,n) =1 + f(n,n-1);
+ 4、当n