题目:分解数
思路:
直接搜索,顺序要注意。
代码:
#include<bits/stdc++.h>
using namespace std;
int n;
vector<int> ans;
void dfs(int y,int s) {
if(s==0) {
if(ans.size()==1) return ;
printf("%d",ans[0]);
for(int i=1;i<ans.size();i++) {
printf("+%d",ans[i]);
}
printf("\n");
return ;
}
if(s<y) return ;
ans.push_back(s);
dfs(s,0);
ans.pop_back();
for(int i=y;i<s;i++) {
ans.push_back(i);
dfs(i,s-i);
ans.pop_back();
}
}
int main() {
scanf("%d",&n);
dfs(1,n);
return 0;
}