题目背景
任何一个大于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;
}