又是被搜索折磨的一天…
洛谷自然数拆分
#include<iostream>
using namespace std;
int n;
int a[15];
void dfs(int x,int y,int startx){//x代表递归的层数,y代表剩余数;
if(y==0&&x!=2){
for(int i=1;i<x-1;i++){//startx指遍历开始的位置;
cout<<a[i]<<"+";
}cout<<a[x-1]<<"\n";
return;
}for(int i=startx;i<=y;i++){
a[x]=i;
dfs(x+1,y-i,i);
}
}
int main(){
cin>>n;
dfs(1,n,1);
return 0;
}