將整數分解成若干項相加的形式
阿新 • • 發佈:2019-01-02
#include<stdio.h>
#define MAXN 30
int 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++;
printf("%d=%d",N,Terms[0]);
for(i=1;i<num;i++)
printf ("+%d",Terms[i]);
printf(";");
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;
}