Advertisement
JosepRivaille

P89318: Paraules prohibides

Nov 4th, 2017
198
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.71 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4.  
  5. typedef int boolean;
  6.  
  7. void print_case(const vector<char> &v, const int &n)
  8. {
  9.   for (int i = 0; i < n; ++i)
  10.     cout << v[i];
  11.   cout << endl;
  12. }
  13.  
  14. void backtrack(vector<char> &v, vector<boolean> &used, const int &n, int it)
  15. {
  16.   if (it == n) print_case(v, n);
  17.   else {
  18.     for (int i = 0; i < n; ++i) {
  19.       if (!used[i] && (it == 0 || v[it-1] + 1 != 'a' + i)) {
  20.         used[i] = true;
  21.         v[it] = 'a' + i;
  22.         backtrack(v, used, n, it+1);
  23.         used[i] = false;
  24.       }
  25.     }
  26.   }
  27. }
  28.  
  29. int main()
  30. {
  31.   int n;
  32.   cin >> n;
  33.   vector<boolean> used(n, false);
  34.   vector<char> v(n);
  35.   backtrack(v, used, n, 0);
  36. }
  37.  
  38. //JosepRivaille
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement