这道题是 典型的母函数问题;
其整数划分:
例如 4:可以看成 从 1,2 ,3,4;中选出数字出来组成4;
根据母函数的性质可以看成(1+x1+x2+x3+x4)(1+x2+x4)(1+x3)(1+x4);
以第一个括号里面的表达式来看:1代表不取,x1 代表取一个1 ,x2代表取两个1;
#include<iostream>
using namespace std;
int c[120],c1[120];
int main()
{
int number;
while(cin>>number)
{
int i,j,k;
for(i=0;i<=number;i++)
{
c[i]=1;
c1[i]=0;
}
for(i=2;i<=number;i++)
{
for(j=0;j<=number;j++)
{
for(k=0;j+k<=number;k+=i)
{
c1[j+k]+=c[j];
}
}
for(j=0;j<=number;j++)
{
c[j]=c1[j];
c1[j]=0;
}
}
cout<<c[number]<<endl;
}
}