#include <bits/stdc++.h>
using namespace std;
int n, cnt;string s;
// k记录当前分解的剩余值 last记录最近分解出的数大小 str记录分解后连接生成字符串
void back(int k, int last, string str){
// 若k为0,即分解完,当前分解输出
if(k == 0 && str.length() != 1){
cout << str << " " <<endl;
return;
}// 从上一拆分的数字开始,生成下一个拆分数 for(int i = last; i <= k; i++){
s = '0' + i;
if(str.length())
back(k - i, i, str + "+" + s);
else{
back(k - i, i, str + s);
}
}
}
int main(){
cin >> n;
back(n, 1, "");
return 0;
}
P2404 自然数的拆分问题
最新推荐文章于 2023-03-26 11:49:17 发布