题目编号:Exp08-Basic01,GJBook3-12-05
题目名称:正整数分解
题目描述:正整数n,按第一项递减的顺序依次输出其和等于n的所有不增的正整数和式。
输入:一个正整数n(0<n≤15)。
输出:每行输出如样例所示,和等于n的不增正整数和式,数字和运算符间无符号,最后一行结尾有一个回车换行符。
#include<stdio.h>int a[20],p=1;
void divide(int n,int flag){if(n<1){printf("%d=",a[0]);for(int i=1;i<p-1;i++){printf("%d+",a[i]);}printf("%d\n",a[p-1]);return;}if(n<flag)flag=n;//下一个分解大小的上限for(int i=flag;i>=1;i--){a[p]=i;p++;divide(n-i,i);p--;}
}
int main(){int n;scanf("%d",&n);a[0]=n;divide(n,n-1);return 0;
}