Share Pastebin
Guest
Public paste!

Untitled

By: a guest | Jan 23rd, 2010 | Syntax: C++ | Size: 0.84 KB | Hits: 99 | Expires: Never
Copy text to clipboard
  1. #include <iostream>
  2. #include <list>
  3.  
  4. using namespace std;
  5.  
  6. list<int> num_list;
  7.  
  8. void print_list()
  9. {
  10.     list<int>::iterator it;
  11.     bool is_first = true;
  12.     for(it = num_list.begin(); it != num_list.end(); it++)
  13.     {
  14.         if(!is_first)
  15.             cout << " + ";
  16.         else
  17.             is_first = false;
  18.         cout << *it;
  19.     }
  20.     cout << endl;
  21. }
  22.  
  23. void SumOptions_r(int sum, int cur_sum, int cur_num)
  24. {
  25.     if(sum == cur_sum)
  26.     {
  27.         print_list();
  28.         return;
  29.     }
  30.     int i;
  31.     for(i = cur_num; i>= 1; i--)
  32.     {
  33.         if(i + cur_sum > sum)
  34.             continue;
  35.         num_list.push_back(i);
  36.         SumOptions_r(sum, cur_sum + i, i);
  37.         num_list.pop_back();
  38.     }
  39. }
  40.  
  41. void SumOptions(int num)
  42. {
  43.     SumOptions_r(num, 0, num);
  44. }
  45.  
  46. void main()
  47. {
  48.     SumOptions(4);
  49.     getchar();
  50. }