Problem Description
任何一个大于1的自然数n,总可以拆分成若干个小于n的自然数之和。
Input
输入有多组数据,对于每组数据就一个数n。
Output
对于每组输入输出n的拆分方法。
Sample Input
Sample Output
Author
HYNU
代码:
#include<iostream>
using namespace std;
long n,a[10];
long p(long t)
{
int i;
for (i=1;i<t;i++)
cout<<a[i]<<"+";
cout<<a[t]<<endl;
}
long se(long s,long t)
{
int k;
if(s==0){p(t-1);return 0;}
for(k=1;k<=s;k++)
if((a[t-1]<=k)&&(k<n))
{
a[t]=k;
s=s-k;
se(s,t+1);
s=s+k;
}
}
int main()
{
int i;
while(cin>>n)
{
se(n,1);
}
return 0;
}