fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4.  
  5. vector<vector<int>> v;
  6. int arr[33];
  7. int l = 0, r = -1;
  8.  
  9. void dfs(int n, int k){
  10. // cout << n << ' ' << k << '\n';
  11. if(n == 0){
  12. vector<int> tmp;
  13. for(int i = l; i <= r; i ++) tmp.emplace_back(arr[i]);
  14. v.emplace_back(tmp);
  15. return;
  16. }
  17. else{
  18. for(int i = min(n,k); i >= 1; i --){
  19. arr[++r] = i;
  20. dfs(n-i, min(k, i));
  21. r--;
  22. }
  23. }
  24.  
  25. }
  26.  
  27. int main(){
  28. int n;
  29. cin >> n;
  30. dfs(n, n);
  31. cout << v.size() << '\n';
  32. for(auto i : v){
  33. cout << i[0];
  34. for(int j = 1; j < i.size(); j ++){
  35. cout << ',' << i[j];
  36. }
  37. cout << '\n';
  38. }
  39. }
Success #stdin #stdout 0s 5304KB
stdin
5
stdout
7
5
4,1
3,2
3,1,1
2,2,1
2,1,1,1
1,1,1,1,1