Advertisement
DiaxPlayer

Untitled

Feb 18th, 2017
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.10 KB | None | 0 0
  1. #include <vector>
  2. #include <algorithm>
  3.  
  4. class combSet {
  5. public:
  6.     void add(int a) {
  7.         tab.push_back(a);
  8.     }
  9.     int calculate() {
  10.         go_step(0, -1);
  11.         return get_max();
  12.     }
  13. private:
  14.     void go_step(int sum, int i) {
  15.         if ( i >= (int)tab.size()-1) {
  16.             sums.push_back(sum);
  17.             return;
  18.         }
  19.         go_step(sum + tab[i+1], i+1);
  20.         if (i < (int)tab.size()-2)
  21.             go_step(sum + tab[i+2], i+2);
  22.         else
  23.             go_step(sum, i+2);
  24.     }
  25.     int get_max() {
  26.         return *std::max_element(sums.begin(), sums.end());
  27.     }
  28.     std::vector<int> tab;
  29.     std::vector<int> sums;
  30. };
  31.  
  32. int downStairs(const int T[], unsigned n) {
  33.     int sum = 0;
  34.     std::cout << "n = " << n << std::endl;
  35.     for (auto i = 0u; i < n; i++) {
  36.         if (T[i] >= 0)
  37.             sum += T[i];
  38.         else {
  39.             combSet test;
  40.             while (T[i] < 0  &&  i < n) {
  41.                 test.add(T[i]);
  42.                 i++;
  43.             }
  44.             sum += test.calculate();
  45.             i--;
  46.         }
  47.     }
  48.     return sum;
  49. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement