Advertisement
jonator

par pro

Dec 21st, 2014
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.29 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. using namespace std;
  5.  
  6. void escriure(vector<char>& v) {
  7.   for (int i = 0; i < v.size(); ++i) {
  8.     cout << v[i];
  9.   }
  10.   cout << endl;
  11. }
  12.  
  13. bool condicions(vector<pair<char, bool> >& c, vector<char>& v, int it) {
  14.   if (it != 0) {
  15.     for (int i = 0; i < v.size(); ++i) {
  16.       if (c[i].first == v[it]) {
  17.     if (v[it-1] == c[i-1].first)
  18.       return false;
  19.       }
  20.     }
  21.   }
  22.   return true;
  23. }
  24.  
  25. void paraulesprohibides(vector<pair<char, bool> >& c, vector<char>& v, int it) {
  26.   if (it == v.size()) escriure(v);
  27.   else if (not condicions(c,v, it-1)) return;
  28.   else {
  29.     for (int i = 0; i < v.size(); ++i) {
  30.       if (not c[i].second) {
  31.     c[i].second = true;
  32.     v[it] = c[i].first;
  33.     paraulesprohibides(c,v,it+1);
  34.     c[i].second = false;
  35.       }
  36.     }
  37.   }
  38. }
  39.  
  40. int main() {
  41.   vector<pair<char, bool> > c (9);
  42.   c[0].first = 'a'; c[0].second = false;
  43.   c[1].first = 'b'; c[1].second = false;
  44.   c[2].first = 'c'; c[2].second = false;
  45.   c[3].first = 'd'; c[3].second = false;
  46.   c[4].first = 'e'; c[4].second = false;
  47.   c[5].first = 'f'; c[5].second = false;
  48.   c[6].first = 'g'; c[6].second = false;
  49.   c[7].first = 'h'; c[7].second = false;
  50.   c[8].first = 'i'; c[8].second = false;
  51.   int n; cin >> n;
  52.   vector<char> v(n);
  53.   paraulesprohibides(c,v,0);
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement