Advertisement
MouseyN1

Permutari steaguri maghiara

Oct 2nd, 2013
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.37 KB | None | 0 0
  1. /*
  2. 1. Se citesc n culori din fisierul de intrare steaguri.in. Sa se genereze:
  3. a) Toate steagurile tricolore ce se pot forma cu cele n culori.
  4. b) Toate steagurile tricolore ce se pot forma astfel incat acestea sa aiba in mijloc prima culoare citita din fisier.
  5. */
  6. #include <fstream>
  7. using namespace std;
  8. ifstream fin("steaguri.in");
  9. ofstream fout("steaguri.out");
  10. char culoare[9][10];
  11. int st[9], n, contor(0);
  12. int valid(int);
  13. int solutie(int);
  14. void scriere(int);
  15. void back(int);
  16.  
  17. /*int valid(int k)
  18. {
  19.     for(int i = 1; i < k; i++)
  20.         if(st[k] == st[i])
  21.             return 0;
  22.     return 1;
  23. }*/
  24.  
  25. int valid(int k)
  26. {
  27.     if(k == 2)
  28.         return st[k] == 1;
  29.     else
  30.     {
  31.         int i;
  32.         for(i = 1; i < k; i++)
  33.             if(st[k] == st[i])
  34.                 return 0;
  35.         return 1;
  36.     }
  37. }
  38.  
  39. int solutie(int k)
  40. {
  41.     return k == 3;
  42. }
  43.  
  44. void back(int k)
  45. {
  46.     int i;
  47.     for(i = 1; i <= n; i++)
  48.     {
  49.         st[k] = i;
  50.         if(valid(k)) {
  51.             if(solutie(k))
  52.                 scriere(k);
  53.             else back(k + 1);
  54.         }
  55.     }
  56. }
  57.  
  58. void scriere(int k)
  59. {
  60.     contor++;
  61.     for(int i = 1; i <= k; i++)
  62.         fout << culoare[st[i]] << ' ';
  63.     fout << '\n';
  64. }
  65.  
  66. int main()
  67. {
  68.     fin >> n;
  69.     fin.get();
  70.     for(int i = 1; i <= n; i++)
  71.         fin.getline(culoare[i], 10);
  72.     back(1);
  73.     if(contor == 0)
  74.         fout << "Nicio solutie";
  75.     else fout << contor;
  76.     fout << '\n';
  77.     fout.close();
  78.     return 0;
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement