自然数的拆分问题

#include <iostream>
#include <cstdio>
using namespace std;
int n, p[11]={1}, cnt = 1, m;
void print(int t) {
    for(int i = 1; i < t; i++)
        cout << p[i] << "+";
    cout << p[t] << endl;
}
void dfs(int a) {
    for (int i = p[a-1]; i <= m; i++){
        if(i == n) continue;
        p[a]=i;
        m -= i;
        if (m == 0) print(a);
        else dfs(a+1);
        m += i;
    }
}
int main() {
    cin >> n;
    m = n;
    dfs(1);
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/baoyihan/p/11101986.html