题记1|| 自然数的拆分

发布时间 2023-10-16 01:08:14作者: shalins

题目:

 代码

 

#include <iostream>

using namespace std;
int sta[105];
int n, top = 0;

void dfs(int sum, int lst) {
    if (sum > n) {
        return ;
    }
    if (sum == n) {
        for(int i = 1; i <= top; ++ i)
            std::cout << sta[i] << " \n"[i == top];
        return ;
    }
    for(int i = lst; i <= n - sum; ++ i)
        sta[++ top] = i, dfs(sum + i, i), sta[top --] = 0;
    return ;
}

   
int main(){
    cin >> n;
    dfs( 0, 1 );
    return 0;
}
 
总结: