P2404

题目背景

任何一个大于1的自然数n,总可以拆分成若干个小于n的自然数之和。

题目描述

任何一个大于1的自然数n,总可以拆分成若干个小于n的自然数之和。

输入输出格式

输入格式:
输入:待拆分的自然数n。

输出格式:
输出:若干数的加法式子。

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>

int total = 0;
int n = 10;
int p[10] = {0};

void f(int a, int m)
{
    int rest, j, i;

    for (i=1; i<=a; i++)
    {
        if (i >= p[m-1]) // 当这个数组可以存数字的时候
        {
            p[m] = i;
            rest = a - i;
            if (rest == 0 && m > 1)
            {
                // total++;
                // printf("第%d种."), total;
                for (j=1; j<m; j++)
                {
                    printf("%d+", p[j]);
                }
                printf("%d
", p[m]);
            }
            f(rest, m+1);
            p[m] = 0;
        }
    }

}

int main()
{
    int n;
    scanf("%d", &n);
    f(n, 1);
    return 0;
}
原文地址:https://www.cnblogs.com/laohaozi/p/12538228.html