OneDrain

Untitled

Oct 10th, 2017
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.09 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int n, st[101]; // st = stiva.
  6.  
  7. bool valid(int k) // Verificam daca solutia gasita este solutie partiala.
  8. {
  9.     for(int i = 1; i < k; i++)
  10.         if(st[k] == st[i]) /* Daca ultimul index din stiva este egal cu unul din celelalte, e de rau (nu avem */
  11.             return 0;      /* indici distinsi).*/
  12.     return 1;
  13. }
  14.  
  15. bool solutie(int k) // Verificam daca solutia gasita este solutie finala.
  16. {
  17.     return k == n; // Verificam daca avem n elemente per nivel (k = nivel)
  18. }
  19.  
  20. void afis(int k)
  21. {
  22.     for(int i = 1; i <= k; i++)
  23.         cout << st[i] << " ";
  24.     cout << endl;
  25. }
  26.  
  27. void bk(int k)
  28. {
  29.     for(int i = 1; i <= n; i++)
  30.     {
  31.         st[k] = i; // Introducem indicii in stiva.
  32.         if(valid(k)) // Daca avem solutie partiala
  33.             if(solutie(k)) // Daca acea solutie partiala este si finala.
  34.                 afis(k); // Afisam indicii corespunzatori.
  35.         else
  36.             bk(k + 1); // Altfel ne ducem mai departe cu un nivel si repetam procesul.
  37.     }
  38. }
  39.  
  40. int main()
  41. {
  42.     cin >> n;
  43.     bk(1);
  44.     return 0;
  45. }
Advertisement
Add Comment
Please, Sign In to add comment