题目编号: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;
}