luni, 17 decembrie 2012

Problema 23 (variante teza)

23. Sa se genereze n perechi de paranteze care se inchid corect. Exemplu: n=3: ( ( ( ) ) ) ( ( ) ( ) ) ( ) ( ( ) ) etc


#include<iostream.h>
int v[100],i,j,k,n,t;

void afisare()
{ int i;
for(i=1;i<=2*n;i++)
if(v[i]==1)
cout<<"(";
else
cout<<")";
cout<<endl;}


int cont(int k)
{int si,sd;
si=0;
sd=0;
for(i=1;i<=k;i++)
if(v[i]==1)
sd=sd+1;
else
si=si+1;
if(si>sd)
return 0;
if(k==2*n && si!=sd)
return 0;
return 1; }

void back(int k)
{int i;
for(i=1;i<=2;i++)
{v[k]=i;
if(cont(k)==1)
if(k==2*n)
afisare();
else
back(k+1);}}

int main()
{cout<<"n=";
cin>>n;
back(1);
return 0;}

Niciun comentariu:

Trimiteți un comentariu