PTA 7-37 整数分解为若干项之和

 

 代码如下:

#include<stdio.h>

int N;

int s[31];
int top = -1;
int count = 0; 
int sum = 0; 

void division (int i);

int main (){
    scanf ("%d", &N);
    division (1);
    return 0;
}

void division (int i)
{
    if (sum == N)
    {
        count ++;
        printf("%d=", N);
        int k;
        for (k=0; k<top; k++)
        {
            printf("%d+", s[k]);
        }
        if (count%4 == 0 || s[top] == N)
        {
            printf("%d\n", s[top]);
        }
        else
        {
            printf("%d;", s[top]);
        }
        return;
    } 
    if (sum > N)
    {
        return;
    }
    int j;
    for (j=i; j<=N; j++)//关键
    {
        s[++top] = j;
        sum += j;
        division (j);
        sum -= j;
        top --;
    } 
}

  

posted @ 2020-03-13 18:50  X-Yunner  阅读(572)  评论(0)    收藏  举报