Advertisement
J00ker

Untitled

Oct 9th, 2015
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.38 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <cstring>
  4. #include <algorithm>
  5.  
  6. using namespace std;
  7.  
  8. int st[100], lit[200], n;
  9. char S[9];
  10.  
  11. void Init(int k)
  12. {
  13.     st[k] = 0;
  14. }
  15.  
  16. int Succesor(int k)
  17. {
  18.     if(st[k] < n)
  19.     {
  20.         st[k]++;
  21.         return 1;
  22.     }
  23.     return 0;
  24. }
  25.  
  26. int Valid(int k)
  27. {
  28.     for(int i = 1; i <  k; i++)
  29.         if(st[k] == st[i])
  30.             return 0;
  31.     return 1;
  32. }
  33.  
  34. int Solutie(int k)
  35. {
  36.     if(k == n+1)
  37.         return 1;
  38.     return 0;
  39. }
  40.  
  41.  
  42. ofstream fout("anagrame1.out");
  43. void Tipar()
  44. {
  45.     int l, l2, l3;
  46.     for(int i = 1; i <= n-2; i++)
  47.     {
  48.         l  = S[st[i]-1];
  49.         l2 = S[st[i+1]-1];
  50.         l3 = S[st[i+2]-1];
  51.         //fout << "-" << l << l2 << l3 << "\n";
  52.         if(lit[l] == lit[l2] == lit[l3] == 0)
  53.             return;
  54.     }
  55.     for(int i = 1; i <= n; i++)
  56.         fout << S[st[i]-1];
  57.     fout << "\n";
  58. }
  59.  
  60. void backtrack(int k)
  61. {
  62.     if(Solutie(k))
  63.         Tipar();
  64.     else
  65.     {
  66.         Init(k);
  67.         while(Succesor(k))
  68.             if(Valid(k))
  69.                 backtrack(k+1);
  70.     }
  71. }
  72.  
  73. int main()
  74. {
  75.     lit['a'] = lit['e'] = lit['i'] = lit['o'] = lit['u'] = 1;
  76.     lit['A'] = lit['E'] = lit['I'] = lit['O'] = lit['U'] = 1;
  77.     ifstream fin("anagrame1.in");
  78.     fin.getline(S, 9);
  79.     n = strlen(S);
  80.     sort(S, S+n);
  81.     backtrack(1);
  82.     fin.close();
  83.     return 0;
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement