#include <iostream>
#include <vector>
using namespace std;
int cnt = 0;
//m为当前要加入的数,n为要分解的数,sum为当前总和
void dfs(int m, int sum, int n, vector<int>& vi)
{
if(sum == n)
{
for(auto e : vi)
cout << e << ' ';
cnt ++;
cout << endl;
return;
}
if(sum > n)
return;
for(int i = m; sum + i <= n; i ++)
{
vi.push_back(i);
dfs(i, sum + i, n, vi);
vi.pop_back();
}
}
int main()
{
vector<int> vi;
int n;
cin >> n;
dfs(1, 0, n, vi);
cout << cnt << endl;
return 0;
}
运行结果: