JosepRivaille

P49889: Consonants i vocals

May 17th, 2016
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.04 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4.  
  5.  
  6. struct word {
  7.   char c;
  8.   bool b;
  9. };
  10.  
  11.  
  12. void writePermutation(const vector<char> &v, const int &n)
  13. {
  14.   for (int i = 0; i < n; ++i)
  15.     cout << v[i];
  16.   cout << endl;
  17. }
  18.  
  19. void backtrack(vector<char> &v, const int &n, int it, vector<word> &s1, vector<word> &s2)
  20. {
  21.   if (it == n) writePermutation(v, n);
  22.   else {
  23.     if (it%2 == 0) { //Consonants
  24.       for (int i = 0; i < n/2; ++i) {
  25.     if (!s1[i].b) {
  26.       s1[i].b = true;
  27.       v[it] = s1[i].c;
  28.       backtrack(v, n, it+1, s1, s2);
  29.       s1[i].b = false;
  30.     }
  31.       }
  32.     }
  33.     else { //Vowels
  34.       for (int i = 0; i < n/2; ++i) {
  35.     if (!s2[i].b) {
  36.       s2[i].b = true;
  37.       v[it] = s2[i].c;
  38.       backtrack(v, n, it+1, s1, s2);
  39.       s2[i].b = false;
  40.     }
  41.       }
  42.     }
  43.   }
  44. }
  45.  
  46. int main()
  47. {
  48.   int n;
  49.   cin >> n;
  50.   vector<word> s1(n);
  51.   for (int i = 0; i < n; ++i)
  52.     cin >> s1[i].c;
  53.   vector<word> s2(n);
  54.   for (int i = 0; i < n; ++i)
  55.     cin >> s2[i].c;
  56.   vector<char> v(2*n);
  57.   backtrack(v, n*2, 0, s1, s2);
  58. }
  59.  
  60. //JosepRivaille
Add Comment
Please, Sign In to add comment