题目:给定一个正整数n,它可分解成多个正整数的和,即:n=1+1+……+1(n个1),n=1+1+……+2(n-1个1)……;要求编程求出n的每一种分解方式,及分解个数。
输入:一个正整数n
输出:分解方式,分解的个数。
解:递增方式,递归求解
#include<stdio.h>
#define MAX 100
int a[MAX],p=0,count=0;
void Solvenum(int n,int minnum){
int i;
if(n<=0){
printf("%d",a[0]);
for(i=1;i<p;i++){
printf("+%d",a[i]);
}
printf("\n");
count++;
return;
}
else{
for(i=minnum;i<=n;i++){
a[p]=i;
p++;
Solvenum(n-i,i);
p--;
}
}
}
int main(){
int n;
scanf("%d",&n);
Solvenum(n,1);
printf("total:%d",count);
}
运行结果: