JUCARII MOS CRACIUN

Copiii asteapta jucarii de la Mos Craciun. Scrieti un program care determina toate modurile diferite in care ei pot sa fie asezati in lista, astfel incat sa fie vizitati toti copiii si vizitele sa se faca in orinea descrescatoare a numarului de jucarii dorite de fiecare.Se citesc de la tastatura: n, numarul de copii, apoi numele si numarul de jucarii cerut de fiecare dintre cei n copii.Sa se scrie numele copiilor, in ordinea in care vor fi vizitati de Mos Craciun.

Exemplu: pentru datele de intrare: n=4
Dan 2
Cristina 4
Corina 6
Iulia 4
se scriu urmatoarele solutii:
Corina Iulia Cristina Dan
Corina Cristina Iulia Dan

#include<iostream.h>
struct copil{char nume[10]; int jucarii; };
struct copil v[10];
int st[20],n,k;
void init()
{
st[k]=0;
}
int succesor()
{if(st[k]<n)

{st[k]++;return 1;}

return 0;}

int valid()

{int i;

for(i=1;1<k;i++)

if(st[k]==st[i]) return 0;

for(i=1;i<k;i++)

if(v[st[k]].jucarii>v[st[i]].jucarii) return 0;

return 1;}

int solutie()

{int i;

for(i=1;i<=n;i++)

 cout<<v[st[i]].nume<<” “;

cout<<endl;}

void bkt()

{int as;k=1;

init();

while(k>0)

{

do {} while ((as=succesor() && (!valid()));

if (as)

if (solutie()) tipar();

else

{k++; init();}

else k–;

}

}

void main()

{cout<<“n=”;cin>>n;

for(int i=1;i<=n;i++)

{

cout<<“nume”<<i;cin>>v[i].nume;

cout<<“nr de jucarii pentru copilul “<<i;cin>>v[i].jucarii;

}

bkt();

}

Leave a Comment