fork download
  1. #include <iostream>
  2. #include <fstream>
  3. #define FIN "partitiinumar.in"
  4. #define FOUT "partitiinumar.out"
  5. #define DIM 100
  6.  
  7. using namespace std;
  8.  
  9. ifstream fin( FIN );
  10.  
  11. ofstream fout( FOUT );
  12.  
  13. int n,
  14.  
  15. sum,
  16.  
  17. stack[ 101 ];
  18.  
  19. void solve(int level) {
  20.  
  21. if(sum == n) {
  22.  
  23. for(int i = 1; i < level; ++i) {
  24.  
  25. cout<<stack[i]<<" ";
  26.  
  27. }
  28.  
  29. cout<<endl;
  30.  
  31. } else {
  32.  
  33. if(level==1) stack[level] = 0;
  34.  
  35. else stack[level] = stack[level-1] - 1;
  36.  
  37. while(stack[level] + sum < n) {
  38.  
  39. stack[level]+=1;
  40.  
  41. sum += stack[level];
  42.  
  43. solve(level+1);
  44.  
  45. sum -= stack[level];
  46. }
  47. }
  48. }
  49.  
  50. int main(int argc, char const *argv[]) {
  51.  
  52. sum = 0;
  53.  
  54. cin>>n;
  55.  
  56. solve(1);
  57.  
  58. return 0;
  59.  
  60. }
  61.  
  62.  
  63.  
  64.  
Success #stdin #stdout 0.01s 5472KB
stdin
5
stdout
1 1 1 1 1 
1 1 1 2 
1 1 3 
1 2 2 
1 4 
2 3 
5