千万请您看一看,一个C问题?
请教各位大师,下面的程序要求将一个自然数N进行分划,
如:N=5时有:
4,1
3,2
3,1,1
2,2,1
2,1,1,1
1,1,1,1,1
这六种不同的分划结果,并逐一打印出。
小弟不知程序中的如:<---A--->空该填何内容,万望不吝
赐教!!!
另外请问对此种题型,该如何入手?如能赐教,万分感激!!!
[程序]
#include<stdio.h>
int n[1000],m,k;
void printfsum()
{int j;
for(j=0;n[j]!=0;j++)
printf("%3d",n[j]);
printf("\n");
}
void sum(i)
{if(m-n[i]<=n[i])
{<---A--->
i++;
n[i+1]=0;
}
else
{<---B--->
<---C--->
i++;
}
if(m!=n[i]) <---D--->
else
printfsum();
if(n[i]>1)
{<---E--->
<---F--->
}
else
{while((n[i]==1)&&(i>0))
{i--;
m+=n[i];
}
if(i!=0)
{<---G--->
<---H--->
}
}
}
main()
{int i,j;
scanf("%d",&n[0]);
m=k=n[0];
for(i=1;i<=k;i++) n[i]=0;
while(n[0]!=1)
{n[0]--;i=0;
sum(0);
m=k;
}
}