实验案例2-3:整数分解为若干项之和

来源:互联网 发布:手机劫持软件 编辑:程序博客网 时间:2024/04/26 02:51

将一个正整数N分解成几个正整数相加,可以有多种分解方法,例如7=6+1,7=5+2,7=5+1+1,…。编程求出正整数N的所有整数分解式子。

输入样例:

7
输出样例:

7=1+1+1+1+1+1+1;7=1+1+1+1+1+2;7=1+1+1+1+3;7=1+1+1+2+2
7=1+1+1+4;7=1+1+2+3;7=1+1+5;7=1+2+2+2
7=1+2+4;7=1+3+3;7=1+6;7=2+2+3
7=2+5;7=3+4;7=7

#include<stdio.h>#define MAXN 30int Terms[MAXN];int count;//count表示输出结果数int N;//被分解的整数void Search(int remain,int start,int num)//remain剩余分解数,start表示分解起点数,分解得每一项应该大于等于start//num用来记录已经分解得项数{    int i;    if(0==remain)    {        count++;        if(count%4!=1)            printf(";");        printf("%d=%d",N,Terms[0]);        for(i=1;i<num;i++)            printf("+%d",Terms[i]);        if(count%4==0)            printf("\n");    }    else    {        for(i=start;i<=remain;i++)        {            Terms[num]=i;            Search(remain-i,i,num+1);        }    }}int main(){    scanf("%d",&N);    count=0;    Search(N,1,0);    if(count%4!=0)        printf("\n");    return 0;}
0 0
原创粉丝点击