求一个数的和数(高分悬赏!!!!!)

来源:百度知道 编辑:UC知道 时间:2024/05/15 10:55:29
求给定的一个数n,输出它所有和数的情况,比如说:
n为4,那么输出为:
1 1 1 1
2 1 1
3 1
4
若n为5,则输出为:
1 1 1 1 1
2 1 1 1
2 2 1
3 1 1
3 2
4 1
5
---------------------
请用C语言实现之!!!!万分感谢!!!!

书写格式可能会有点错误,你修改一下就没问题了,好久没用c了

int sum;

main(){
sum=0;
int a[100];
scanf("%d",&sum);
a[0]=1;
gogo(a, 1, 0);
}

function gogo(int[] a, int s, int k){
int i;
if(s==sum){
for(i=0; i<=k; i++){
printf(" %d", a[i]);
}
printf("/n");
}
elseif(s>sum){
return;
}

for(i=1; i<=a[k]; i++){
gogo(a[k+1]=i, s+=i, k++);
}
}