Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- // ( -> 1
- // ) -> 2
- int v[12], n;
- void init (int k){
- v[k]=0;
- }
- int solutie (int k){
- return k==n+1;
- }
- int existaSuccesor (int k){
- if (v[k]<2){
- v[k]++;
- return 1;
- }
- return 0;
- }
- void tipar (){
- for (int i=1; i<=n; i++){
- if (v[i]==1) cout<<"(";
- if (v[i]==2) cout<<")";
- }
- cout<<endl;
- }
- int valid (int k){
- int p1=0, p2=0;
- for (int i=1; i<=k; i++){
- if (v[i]==1) p1++;
- if (v[i]==2) p2++;
- }
- if (p1>n/2) return 0;
- if (p2>n/2) return 0;
- if (v[1]==2) return 0;
- if (v[n]==1) return 0;
- if (v[k]==2){
- if (p1==p2-1)
- return 0;
- }
- return 1;
- }
- void back (int k){
- if(solutie(k)) tipar();
- else{
- init(k);
- while (existaSuccesor(k)){
- if (valid(k)) back(k+1);
- }
- }
- }
- int main()
- {
- cout<<"n="; cin>>n;
- back (1);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement