小白菜oj 1038 [視訊]遞迴8(分解數)
阿新 • • 發佈:2018-12-24
題目:分解數
思路:
直接搜尋,順序要注意。
程式碼:
#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;
}