【问题描述】
任何一个大于1的自然数n,总可以拆分成若干个小于n的自然数之和。
请输出所有的可能拆分及拆分总数。
【算法模板】
void dfs(int step){
判断边界{
输出解
}
尝试每一种可能{
满足check条件{
标记
继续下一步:dfs(step+1)
恢复初始状态(回溯的时候要用到)
}
}
}
【算法代码】
#include
using namespace std;
const int maxn=1001;
int total=0;
int step; //拆分成的数字个数
int n,sum;
int a[maxn]={1};
void print(int step) {
total++;
cout<
for(int i=1; i<=step-1; i++)
cout<
cout<