整数的分划问题
整数的分划问题。 如,对于正整数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)
程序输出该整数的所有划分。
程序代码:#include<stdio.h>
void p(int n, int index)
{
static int a[512];
int i;
if(n <= 0)
{
printf("%d", a[0]);
for(i = 1; i < index; printf(" + %d", a[i++]));
printf("\n");
return;
}
for(i = index && n >= a[index - 1] ? a[index - 1] : n; i; i--)
{
a[index] = i;
p(n - i, index + 1);
}
}
void print(int n)
{
p(n, 0);
}
int main()
{
int n;
scanf("%d", &n);
print(n);
return 0;
}
