fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int n,a[12];
  4. vector<vector<int> >res;
  5. void add(int n){
  6. vector<int>b;
  7. for(int i=1;i<=n;i++) b.push_back(a[i]);
  8. res.push_back(b);
  9. }
  10. void Try(int i,int cur, int k){
  11. for(int j=k;j>=1;j--){
  12. if(cur+j<=n){
  13. a[i]=j;
  14. cur+=j;
  15. if(cur==n) add(i);
  16. else Try(i+1,cur,j);
  17. cur-=j;
  18. }
  19. }
  20. }
  21.  
  22.  
  23. int main(){
  24. int t;
  25. cin >> t;
  26. while (t--){
  27. cin>>n;
  28. res.clear();
  29. Try(1,0,n);
  30. cout<<res.size()<<endl;
  31. for(int i=0;i<res.size();i++){
  32. cout<<"(";
  33. for(int j=0;j<res[i].size()-1;j++) cout<<res[i][j]<<" ";
  34. cout<<res[i][res[i].size()-1]<<") ";
  35. }
  36. cout<<endl;
  37. }
  38. return 0;
  39. }
Success #stdin #stdout 0.01s 5440KB
stdin
1
4
stdout
5
(4) (3 1) (2 2) (2 1 1) (1 1 1 1)