整数的划分问题
整数的划分问题。
如,对于正整数n=6,可以分划为:
6
5+1
4+2, 4+1+1
3+3, 3+2+1, 3+1+1+1
2+2+2, 2+2+1+1, 2+1+1+1+1
1+1+1+1+1+1+1
现在的问题是,对于给定的正整数n,编写算法打印所有划分。
用户从键盘输入 n (范围1~10)
程序输出该整数的所有划分。
请帮忙分析一下下面的函数,不是很懂
void divide(char *s,int first,int other)
//该函数输出所有的划分的式子
{
int i;
static char t[50];//保存上一次的输出结果
char temp[50],str[3]={0};
if(other==0){
if(s[0]==t[0])
printf(",%s",s);
else
printf("%s",s);
strcpy(t,s);
}
for(i=other;i>=1;i--){
if(i>first)
continue;
strcpy(temp,s);
str[0]='+';
str[1]=i+'0';
strcat(s,str);
divide(s,i,other-i);
strcpy(s,temp);
}
}