Sunteți pe pagina 1din 2

PROBLEME BACKTRACKING

I.

PERMUTARI
S se genereze toate permutrile unei mulimi de numere oarecare. Numerele se memoreaz ntr-un vector. (Indicaie.
Se permut indicii elementelor din vectorul v, i n subprogramul tipar() se afieaz elementele v[st[i]]).
2. S se afieze toate anagramele unui cuvnd citit de la tastatur.
3. S se genereze toate permutrile mulimii {1, 2, 3, , n} n care dou numere vecine nu trebuie s fie ambele pare sau
ambele impare. Indicaie. n subprogramul valid() se mai verific i condiia suplimentar de vecintate.
int valid() {
if (k>1 && (st[k-1]%2==0 && st[k]%2==0)|| (st[k-1]%2==1 && st[k]%2==1)) return 0;
for (int i=1;i<k;i++)
if (st[i]==st[k]) return 0;
return 1;}
4. S se genereze toate permutrile mulimii {1, 3, 5, , 2xn+1}. Indicaie. Soluia are n elemente. n subprogramul
init() elementul din vrful stivei se iniializeaz cu valoarea -1, iar n subprogramul succesor() se modific modul de
determinare a succesorului.
int succesor() {
if (st[k]<2*n+1) {
st[k]= st[k]+2; return 1;}
else return 0;}
5. S se genereze toate permutrile unei mulimi de numere oarecare, astfel nct cea mai mic i cea mai mare valoare
s-i pstreze poziiile iniiale.
6. ntr-un ir sunt aranjate n persoane. S se genereze toate posibilitile de rearanjare n ir a acestor persoane, astfel
nct fiecare persoan din ir:
a. s nu aib n faa sa aceeai persoan pe care a avut-o n irul iniial;
b. s nu aib aceiai vecini ca n irul iniial;
c. s nu aib n faa sa persoanele pe care le-a avut n irul iniial;
d. s fie desprit de vecinii pe care i-a avut n irul iniial de una sau cel mult p persoane; valoarea pentru p
se citete de la tastatur.
ARANJAMENTE
1. S se genereze toate posibilitile de aranjare pe m scaune a n persoane (m<=n). Valorile pentru n i m i numele
persoanelor se citesc dintr-un fiier text.
2. Se citesc de la tastatur n cifre distincte. S se genereze toate numerele de m cifre (m n) care se pot forma cu aceste
cifre i care conin toate cele n cifre.
3. S se genereze toate anagramele unui cuvnt, din care se elimin p litere oarecare. Valoarea minim a numrului p
este 1, iar valoarea maxim este cu 1 mai mic dect lungimea cuvntului. Se citesc de la tastatur cuvntul i
valoarea numrului p.
4. Se citesc de la tastatur n caractere distincte. S se genereze toate cuvintele de m caractere (m<=n) care se pot forma
cu aceste caractere i care conin toate cele n caractere.
5. Se citete un numr n care are m cifre. S se genereze toate numerele, cu cel mult m cifre, care se pot forma cu cifrele
numrului iniial.
6. Dintr-o mulime de n persoane, aranjate ntr-un ir, se elimin p persoane. S se genereze toate posibilitile de
aranjare ntr-un ir a persoanelor rmase, astfel nct fiecare persoan s nu aib aceiai vecini ca n irul iniial.
Valorile pentru n i p se citesc de la tastatur.
7. S se genereze toate aranjamentele, de m numere, ale unei mulimi de n numere oarecare astfel nct suma elementelor
generate s fie egal cu s. Numrul de elemente ale mulimii, n, elementele mulimii, valoarile pentru m i pentru
suma s, se citesc de la tastatur.
8. S se genereze toate drapelele cu trei culori care se pot forma cu ase culori: alb, galben, rou, verde, albastru i negru,
care au n mijloc culoarea alb, verde sau rou. Indicaie. Soluia are 3 elemente, un element al soluiei fiind indicele
din vector al unei culori. Se genereaz aranjamente cu condiie de 6 obiecte luate cte 3 soluia conine o condiie
intern suplimentar fa de cea impus de aranjamente: elementul 2 al soluiei trebuie s fie indicele culorii alb, verde
sau rou
COMBINARI
1. S se genereze toate grupurile de p persoane care se pot forma din n persoane. Informaiile se citesc dintr-un fiier text
unde, pe primul rnd, sunt scrise valorile pentru p i n, desprite printr-un spaiu, iar pe urmtoarele rnduri numele
persoanelor, cte un nume pe un rnd.
2. Dou persoane i mpart n obiecte astfel: prima persoan ia m obiecte, iar cealalt persoan restul obiectelor. S se
genereze toate posibilitile de distribuire a celor n obiecte ntre cele dou persoane.
3. Dou persoane i mpart n obiecte. Fiecare obiect are o valoare vi. S se genereze toate posibilitile de distribuire a
celor n obiecte, ntre cele dou persoane, astfel nct fiecare persoan s primeasc obiecte, care s aib aceeai
valoare total.
4. Dou persoane i mpart n obiecte astfel: prima persoan ia m obiecte, iar cealalt persoan, restul obiectelor. Fiecare
obiect are o valoare vi. S se genereze toate posibilitile de distribuire a celor n obiecte, ntre cele dou persoane,
astfel nct fiecare persoan s primeasc obiecte care s aib aceeai valoare total.
PRODUS CARTEZIAN
1.

II.

III.

IV.

1.

Se consider n mulimi de cuvinte Ai, fiecare mulime avnd ni cuvinte. S se genereze toate textele de n cuvinte care
se pot forma cu cuvintele din aceste mulimi, cuvntul i din text aparinnd mulimii Ai.
2. ntr-un restaurant, un meniu este format din trei feluri de mncare. Exist patru preparate culinare pentru felul unu,
cinci preparate culinare pentru felul doi i trei preparate culinare pentru felul 3. S se genereze toate meniurile care se
pot forma cu aceste preparate culinare.
3. ntr-un restaurant, un meniu este format din trei feluri de mncare. Exist patru preparate culinare pentru felul unu,
cinci preparate culinare pentru felul doi i trei preparate culinare pentru felul 3. Fiecare preparat culinar are un pre i
un numr de calorii. S se genereze toate meniurile pe care le poate comanda o persoan, care s nu depeasc suma
s i numrul de calorii c. Datele se citesc dintr-un fiier text, astfel: de pe primul rnd suma s i numrul de calorii, de
pe rndul urmtor, n ordine, preul fiecrui preparat culinar, i de pe ultimul rnd, n aceeai ordine, caloriile fiecrui
preparat culinar.
4. Pentru o mulime oarecare A, cu n elemente, s se genereze toate submulimile care au suma elementelor egal cu s.
Numrul de elemente ale mulimii, elementele mulimii A i valoarea pentru suma s se citesc de la tastatur.
5. S se afieze toate numerele cu n cifre (1<=n<=10) care au proprietatea c sunt formate numai din cifre pare, n ordine
descresctoare.
6. S se afieze toate numerele formate din cifre distincte cu proprietatea c suma cifrelor este S. Valoarea variabilei S
se citete de la tastatur.
7. S se afieze toate secvenele de n litere (n numr natural par, citit de la tastatur) din mulimea {A,B,C,D}, secvene
care se construiesc astfel: nu se aaz dou litere identice una lng alta i trebuie s se foloseasc exact n/2 litere A.
8. Se citesc de la tastatur un numr natural n (0<n<=10) i apoi n numere naturale a1, a2, a3, ..., an. S se afieze pe
ecran toate posibilitile de a intercala ntre toate cele n numere operatorii + i - astfel nct, evalund expresia
obinut, de la stnga la dreapta, la fiecare pas, rezultatul obinut s fie strict pozitiv.
9. Se citesc n cifre distincte i un numr natural x. S se genereze toate numerele care se pot forma cu aceste cifre i sunt
mai mici dect numrul x. De exemplu, pentru cifrele 0, 1 i 3 i numrul x=157, se genereaz 1, 3, 10, 11, 13, 30, 31,
33, 100, 101, 103, 110, 111, 113, 130, 131, 133. Indicaie. Se calculeaz numrul de cifre m ale numrului x. Pentru
mulimea A format din cele n cifre, se genereaz produsele carteziene Ap, cu 1<=p<=m. Elementele produsului
cartezian sunt cifrele numrului care se formeaz. Pentru ca un element al produsului cartezian s fie soluie, trebuie
ca primul element s fie diferit de 0 (cifra cea mai semnificativ din numr nu trebuie s fie 0), iar numrul format cu
m cifre s fie mai mic dect numrul x.
10. S se genereze toate numerele naturale, cu cel mult n cifre (n<=10), care sunt formate numai din cifre pare, n ordine
strict cresctoare.
V.
PARTITIILE UNUI NUMAR NATURAL
1. S se genereze toate descompunerile unui numr natural n n numere naturale distincte.
2. S se genereze toate descompunerile unui numr natural n n numere prime.
3. S se genereze toate descompunerile unui numr natural n n sum de 3 i 5.
4. O bar are lungimea L. Se consider n repere de lungimi diferite. S se genereze toate posibilitile de a tia bara
dup reperele existente, fr s rmn rest la tiere, un reper putnd fi folosit de mai multe ori. Se poate ca unele
repere s nu fie folosite Se citesc dintr-un fiier text, de pe primul rnd, lungimea barei L i numrul de repere n,
iar de pe urmtorul rnd, reperele. Numerele de pe un rnd sunt separate prin spaiu.
5. S se gseasc modalitatea de plat a unei sume cu un numr minim de bancnote cu valori date.
VI.
PARTITIILE UNEI MULTIMI
1. S se genereze toate partiiile mulimii A formate din dou submulimi care au suma elementelor egale.
2. S se genereze toate partiiile mulimii A formate din m submulimi.
3. S se genereze toate partiiile mulimii A formate din submulimi care au acelai numr de elemente.
VII.
FUNCTII SURJECTIVE
1. Se citesc de la tastatur n cifre distincte. S se genereze toate numerele de m cifre (n<=m) care se pot forma cu aceste
cifre i care conin toate cele n cifre.
2. Se citesc de la tastatur n caractere distincte. S se genereze toate cuvintele de m caractere (n<=m) care se pot forma
cu aceste caractere i care conin toate cele n caractere.
3. Profesorul de informatic a pregtit m teme, pentru proiecte pe care trebuie s le repartizeze celor n elevi din clas
(m<n), astfel nct nici o tem de proiect s nu rmn nerepartizat. S se genereze toate soluiile de repartizare a
temelor pentru proiect.

S-ar putea să vă placă și