题目:
代码
#include <iostream>
using namespace std;
int sta[105];
int n, top = 0;
void dfs(int sum, int lst) {
if (sum > n) {
return ;
}
if (sum == n) {
for(int i = 1; i <= top; ++ i)
std::cout << sta[i] << " \n"[i == top];
return ;
}
for(int i = lst; i <= n - sum; ++ i)
sta[++ top] = i, dfs(sum + i, i), sta[top --] = 0;
return ;
}
int main(){
cin >> n;
dfs( 0, 1 );
return 0;
}
总结: