应该是迭代加深搜索的问题
#include <bits/stdc++.h>
#define fin cin
#define fout cout
#define maxn 114514
using namespace std;
int a[maxn], n;
bool iddfs(int dep, int maxdep) {
if (a[dep] > n) {
return 0;
}
if (dep == maxdep) {
return a[dep] == n;
}
for (int i = 1; i <= dep; i++) {
a[dep + 1] = a[dep] + a[i];
if (iddfs(dep + 1, maxdep)) {
return 1;
}
}
return 0;
}
int main() {
ios::sync_with_stdio(0); fin.tie(0); fout.tie(0);
while (fin >> n && n) {
a[1] = 1;
int dep = 1;
while (iddfs(1, dep) == 0) {
dep++;
}
for (int i = 1; i <= dep; i++) {
fout << a[i] << " ";
}
fout << endl;
}
return 0;
}