整数N分解成几个数的和打印个数并输出数列
int x;static int a[1000],k=0,t=0;
void prt(){
int i,s=0;
t=0;
for(i=0;i<k;i++)
s=s+a[i];
if(s==x){
for(i=0;i<k;i++)
if(i<k-1) printf("%d+",a[i]);
else printf("%d",a[i]);
printf("\n");
t=1;
}
}
int q(int n,int m){
int i;
int s1,s2;
if(n==1||m==1){
for(i=1;i<=n;i++){
a[k]=1;
k++;
}
prt();
if(t) k=k-n;
return 1;
}
if(n<m) return(q(n,n));
if(n==m) {
a[k]=n;
k++;
prt();
if(t) k--;
s1=q(n,m-1);
return(1+s1);
}
a[k]=m;
k++;
prt();
if(t) k--;
s2=q(n-m,m);
k--;
s1=q(n,m-1);
return(s1+s2);
}
main(){
a[0]=0;
printf("\nn=");
scanf("%d",&x);
printf("\ntotal=%d",q(x,x));
}