Se citeste de la tastatura un numar natural n par, n<30. Sa se genereze si sa se afiseze pe ecran toate combinatiile de n paranteze rotunde care se închid corect. De exemplu, pentru n=4 se obtin urmatoarele combinatii: ( ( ) ) si ( ) ( ) .
#include<iostream.h>
int x[10],n;
void scriesol()
{ int j;
cout<<endl;
for(j=1;j<=n;j++)
if(x[j]==1) cout<<")";
else cout<<"(";
}
int cond(int k)
{ int i,pi=0,pd=0;
for(i=1;i<=k;i++)
if(x[i]==0) pd++;
else pi++;
return pd<=n/2 && pi<=pd;
}
void back(int k)
{
int i;
for(i=0;i<=1;i++)
{
x[k]=i;
if (cond(k))
if (k==n) scriesol();
else back(k+1);
}
}
void main()
{
cin>>n;
back(1);
}