SECVENTE LITERE

Scrieti un program care afiseaza pe ecran toate secventele de n litere (n numar natural par citit de la tastatura) din multimea {A,R,G,V), secvente care se pot construi respectand urmatoarele reguli: nu plasam doua litere identice una langa alta;trebuie sa utilizam exact n/2 litere R

#include<iostream.h>
#include<conio.h>
#include<math.h>
int st[20],n,k;char a[5];

void init()
{st[k]=0;}

int succesor()
{if (st[k]<4)
{st[k]++;
return 1;
}
else return 0;}

int valid()
{int i,nr;

if(k>1)  if(st[k]==st[k-1]) return 0;
if(k==n)

{nr=0; for(i=1;i<=n;i++) if(a[st[i]]==’R’) return 0;}

return 1;}

int sol()
{return (k==n);}

void tipar()
{for(int i=1;i<=n;i++) cout<<a[st[i]];
cout<<endl;
}

void bkt()
{int as;k=1;
init();
while(k>0)
{
do {} while ((as=succesor()) && !valid());
if (as)
if (sol()) tipar();
else {k++;init();}
else k–;
}
}

void main()
{cout<<“n=”;cin>>n;
a[1]=’A’;a[2]=’R’;a[3]=’G’;a[4]=’V’;
bkt();
}

{joscommentenable}

 

Leave a Reply