当前位置: 代码迷 >> 综合 >> 小白菜oj 1038 [视频]递归8(分解数)
  详细解决方案

小白菜oj 1038 [视频]递归8(分解数)

热度:37   发布时间:2023-12-06 07:50:22.0

题目:分解数

思路:
直接搜索,顺序要注意。

代码:

#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;
}