#include using namespace std; int n; vector vec; void dfs(int x) { if (x == 0) { for (int i = 0; i < vec.size(); i++) cout << vec[i] << " "; cout << endl; return; } // 当前位置可以放下每个小于等于x的数字 for (int i = 1; i <= x; i++) { vec.push_back(i); dfs(x - i); vec.pop_back(); } } int main() { cin >> n; dfs(n); return 0; }