Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- int n, st[101], p; // st = stiva; p = limita de elemente de la aranjamente.
- bool valid(int k) // Verificam daca solutia gasita este solutie partiala.
- {
- for(int i = 1; i < k; i++)
- if(st[k] == st[i]) /* Daca ultimul index din stiva este egal cu unul din celelalte, e de rau (nu avem */
- return 0; /* indici distinsi).*/
- return 1;
- }
- bool solutie(int k) // Verificam daca solutia gasita este solutie finala.
- {
- return k == p; // Verificam daca avem p elemente per nivel (k = nivel)
- }
- void afis(int k)
- {
- for(int i = 1; i <= k; i++)
- cout << st[i] << " ";
- cout << endl;
- }
- void bk(int k)
- {
- for(int i = 1; i <= n; i++)
- {
- st[k] = i; // Introducem indicii in stiva.
- if(valid(k)) // Daca avem solutie partiala
- if(solutie(k)) // Daca acea solutie partiala este si finala.
- afis(k); // Afisam indicii corespunzatori.
- else
- bk(k + 1); // Altfel ne ducem mai departe cu un nivel si repetam procesul.
- }
- }
- int main()
- {
- cin >> n >> p;
- bk(1);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment