整数的分划问题
整数的分划问题。 如,对于正整数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; }