整数划分
描述将正整数n表示成一系列正整数之和:n=n1+n2+…+nk, 其中n1≥n2≥…≥nk≥1,k≥1。 正整数n的这种表示称为正整数n的划分。求正整数n的不 同划分个数。
输入第一行是测试数据的数目M(1<=M<=10)。以下每行均包含一个整数n(1<=n<=10)。输出输出每组测试数据有多少种分法。
#include<iostream>
using namespace std;
int p(int n,int m)
{
if(n<1||m<1)
return 0;
if(n==1||m==1)
return 1;
if(n==m)
return p(n,n-1)+1;
if(n<m)
return p(n,n);
if(n>m)
return p(n-m,m)+p(n,m-1);
}
int main()
{
int M,n;
cin>>M;
while(M--)
{
cin>>n;
cout<<p(n,n)<<endl;
}
}