Sunteți pe pagina 1din 1

#include<iostream> using namespace std; int st[15],n,v[2]; void tipar(int k) //afisarea solutiei {for(int i=1;i<=k;i++) if(st[i]==1) cout<<"("; if(st[i]==2)

cout<<")"; cout<<endl;} int valid(int k) //verifica daca elementul de pe nivelul k este valid { for(i=1;i<=n;i++) //caut elementul de pe nivelul k pe nivelele anterioare if(st[k]==st[i] ) //daca il gasesc, elementul nu e valid return 1;} int solutie(int k) {return k==n; for(i=1;i<=n;i++) if(st[i]==1) if(nr}//am solutie cand am ajuns la nivelul n void back(int k) //incarcarea nivelului k {for(int i=1;i<=n;i++) //caut printre toate nr de la 1 la n {st[k]=i; //le incarc pe rand in stiva if(valid(k)) //daca sunt valide if(solutie(k)) //daca am ajuns la solutie tipar(k); else back(k+1); //daca nu am solutie, inseamna ca am // o "bucatica" de solutie si urc pe urmatorul nivel in stiva } } int main() {cin>>n; back(1);//incep incarcarea stivei cu nivelul 1 }

S-ar putea să vă placă și