matheus_monteiro

Troco - 70 pontos - backtraking

Aug 20th, 2021 (edited)
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.59 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. const int MAX = 22;
  4.  
  5. int v, n;
  6. int coin[MAX];
  7. vector<int> sums;
  8.  
  9. void gen(int i, int s) {
  10.     if(i == n) {
  11.         sums.push_back(s);
  12.         return;
  13.     }
  14.     gen(i + 1, s + coin[i]); // add a i-ésima moeda
  15.     gen(i + 1, s); // nao add a i-ésima moeda
  16. }
  17.  
  18. int32_t main() {
  19.  
  20.     ios_base::sync_with_stdio(false);
  21.     cin.tie(nullptr);
  22.  
  23.     cin >> v >> n;
  24.  
  25.     for(int i = 0; i < n; i++)
  26.         cin >> coin[i];
  27.  
  28.     gen(0, 0);
  29.  
  30.     sort(sums.begin(), sums.end());
  31.  
  32.     if(binary_search(sums.begin(), sums.end(), v))
  33.         cout << "S\n";
  34.     else
  35.         cout << "N\n";
  36.  
  37.     return 0;
  38. }
Add Comment
Please, Sign In to add comment