题目:分解数
思路:
直接搜索,顺序要注意。
代码:
#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;
}