0% au considerat acest document util (0 voturi)
166 vizualizări6 pagini

Backtracking PB

Documentul prezintă o serie de probleme de programare ce implică generarea tuturor soluțiilor posibile pentru anumite condiții. Problemele variază de la generarea partitiilor unui număr, la determinarea drumurilor unui robot printr-o matrice, până la generarea permutărilor care respectă anumite restricții. Sunt prezentate exemple pentru fiecare problemă.

Încărcat de

simaioan
Drepturi de autor
© © All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca DOCX, PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
166 vizualizări6 pagini

Backtracking PB

Documentul prezintă o serie de probleme de programare ce implică generarea tuturor soluțiilor posibile pentru anumite condiții. Problemele variază de la generarea partitiilor unui număr, la determinarea drumurilor unui robot printr-o matrice, până la generarea permutărilor care respectă anumite restricții. Sunt prezentate exemple pentru fiecare problemă.

Încărcat de

simaioan
Drepturi de autor
© © All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca DOCX, PDF, TXT sau citiți online pe Scribd
Sunteți pe pagina 1/ 6

1. Fie n>0, natural.

Sa se scrie un program care sa afiseze toate partitiile unui numar natural


n.
Numim partitie a unui numar natural nenul n o multime de numere naturale nenule {p1,
p2, , pk} care ndeplinesc conditia p1+p2+ +pk = n.
Ex: pt n = 4 programul va afisa:
4 = 1+1+1+1
4 = 1+1+2
4 = 1+3
4 = 2+2
4=4

2.

3.

Fiind data o tabla de sah de dimensiunea nxn si un cal n coltul stnga sus al acesteia, se cere sa se afiseze
toate posibilitatile de mutare a acestei piese de sah astfel nct sa treaca o singura data prin fiecare patrat al
tablei. O solutie va fi afisata ca o matrice nxn n care sunt numerotate sariturile calului.
Exemplu, pentru n=5, o solutie este
1 14 9 20 23
10 19 22 15 8
5 2 13 24 21
18 11 4 7 16
3 6 17 12 25
Scrieti un program care citeste de la tastatura un numar natural nenul n (n<=20) si construieste toate
numerele formate din n cifre impare cu proprietatea ca oricare doua cifre alaturare dintr-un numar generat
sunt consecutive n multimea cifrelor impare.
Exemplu: Pentru n=4 se obtin numere de forma: 1313, 1353, 1357, .... 7979...

4.

Se citeste un numar natural n<30. Sa se afiseze toate modalitatile de a-l calcula prin adunari sau scaderi ale
numerelor 1,2, ...n. Fiecare numar de la 1 la n va aparea o singura data n descompunerea lui n. Daca acest
lucru nu este posibil, se va afisa mesajul Imposibil.
Exemplu:
5=1+2+3+4-5
5=1-2-3+4+5
5=-1+2+3-4+5

5.
6.

7.

Folosind metoda backtracking sa se genereze si sa se afiseze ntr-un fisier text toate numerele naturale formate din
cifre impare distincte si sa se calculeze suma numerelor astfel generate.

Sa se afiseze in ordine lexicografica submultimile multimii {1,2,...,n}.


Ex: pentru n=3 se va afisa:
1
12
123
13
2
23
3
Folosind metoda backtracking sa se descompuna in toate modurile un numar natural n ca suma de numere
prime distincte ordonate crescator.

8.

Se citeste un numar natural n si o permutare a multimii {1,2,...,n}. Sa se afiseze permutarile multimii


{1,2,...,n} in care oricare doua elemente alaturate nu au fost alaturate in parmutarea citita.
Ex. Pt n= 4 si permutarea 1 2 3 4 , o permutare care respecta regula este 2 4 1 3

9. Se citeste un numar natural n. Sa se afiseze in fisierul text cuv.out toate cuvintele de n


litere formate doar din litere mici care nu au doua vocale alaturate si nici 2 consoane
alaturate.

10. Sa se aranjeze in toate modurile n pisici si m caini astfel incat nicio pisica sa nu fie asezata intre 2 caini.
11. Se citeste un numar natural n si apoi n bancnote cu valorile v1, v2, ..., vn. Se citeste apoi o suma de bani s.
Afisati toate modurile in care poate fi platita suma s folosind cel putin cate o bancnota de fiecare valoare.

12. Se citeste un numar natural n. Sa se afiseze toate modurile in care poate fi descompus ca produs de numere
naturale diferite de 1 si n.
Exemplu:
36 poate fi descompus ca:
2*2*3*3
2*2*9
2*18
3*3*4
.....

13. Se citeste o matrice nXm cu elemente numere naturale si o pozitie io, jo din matrice in care se afla un robot
care se poate deplasa paralel cu liniile si coloanele matricii pe pozitii alturate.
Afisati toate drumurile pe care poate parcurge robotul matricea trecand prin fiecare pozitie de atatea ori cat
este valoarea pozitiei respective.
Drumurile vor fi afisate ca perechi de coordonate.
Exemplu:
pentru datele de intrare
67
0000000
0011100
0120210
0010100
0000000
0000000
32
se afiseaza
3,2 3,3 4,3 3,3 2,3 2,4 2,5 3,5 4,5 3,5 3,6
3,2 3,3 4,3 3,3 2,3 2,4 2,5 3,5 3,6 3,5 4,5

14. Un labirint se codifica printr-o matrice nXm in care 0 sunt pozitii libere, iar -1 reprezinta zidurile. In pozitia
io,jo se afla un soricel care se poate deplasa pe patru directii paralele cu liniile si coloanele matricii.
Afisati toate drumurile prin care soricelul poate parasi labirintul.
Exemplu:
57
-1 -1 0 -1 -1 -1 -1
0000000
-1 -1 -1 -1 -1 0 -1
-1 0 0 0 0 0 0
-1 -1 -1 -1 -1 -1 -1
42
O solutie este:
-1 -1 0 -1 -1 -1 -1
0000078
-1 -1 -1 -1 -1 6 -1
-1 1 2 3 4 5 0
-1 -1 -1 -1 -1 -1 -1
4,2 4,3 4,4 4,5 4,6 3,6 2,6 2,7

15. Se citeste o matrice nXm care contine litere mici si apoi un cuvant s. Gasiti cel mai lung prefix al cuvantului s
care se poate construi cu literele din matrice prin deplasare paralela cu liniile si coloanele matricii fara a trece
de doua ori prin aceeasi litera.
Exemplu:
56
axsads
aanama
nnaair
asdydi
sedrft
anamariana
prefixul este anamaria

16. Pe o tabla de sah nXn sunt plasate marcate prin valoarea 1, iar prin valoarea 0 sunt marcate pozitiile libere.

Intr-o pozitie j0 de pe prima linie se afla un pion. Determinati toate traseele pe care poate ajunge pionul pana
pe ultima linie. Traseele vor fi afisate atat in matrice cat si ca sir de pozitii.
Exemplu:
pentru datele
5
00000
00000
00000
01010
00000
3
exista 3 solutii marcate in matrice:
00000
00100
00200
01310
00400

sau
000
001
002
030
040
sau
000
001
002
010
000

0
0
0
1
0

0
0
0
0
0

0
0
0
3
4

0
0
0
0
0

17. Harta unui oras este codificata ca o matrice nXm in care 0 reprezinta pozitie accesibila (strada) si -1
reprezinta pozitie inaccesibila (clarire, zid).
In pozitia ir,jr se afla Romeo, iar in pozitia ij,jj se afla Julieta. Romeo se poate deplasa pe pozitii cu laloarea 0,
alaturate pe linii si coloane cu pozitia curenta, fara sa treaca de doua ori prin aceeasi pozitie.
Determinati si afisati cel mai scurt traseu pe care poate ajunge romeo la Julieta. Solutia se va afisa prin pasi
marcari in matrice si ca sir de coordonate prin care trece Romeo.
Toate datele se citesc din fisierul rj.in, iar solutia se afiseaza in fisierul rj.out.
Exemplu:
Pentru datele de intrare:
57
-1 -1 0 -1 -1 -1 -1
-1 0 0 0 0 0 0
-1 0 -1 -1 -1 0 -1
-1 0 0 0 0 0 0
-1 -1 -1 -1 -1 -1 -1
22
36
solutia este:
-1 -1 0 -1 -1 -1 -1
-1 1 2 3 4 5 0
-1 0 -1 -1 -1 6 -1
-1 0 0 0 0 0 0
-1 -1 -1 -1 -1 -1 -1
2,2 2,3 2,4 2,5 2,6 3,6

18. La curtea regelui Arthur s-au adunat n cavaleri numerotati de la 1 la n.


Despre ei se cunosc relatii de dusmanie de forma (x,y) cu semnificati ca x si y se dusmanesc.
Afisati toate modurile in care Arthur ii poate aranja la o masa rotunda cu n scaune astfel incat sa nu stea unul
langa altul 2 cavaleri care dusmanesc.

19. Se dau urmatoarele 6 culori: alb, galben, rosu, verde, albastru si negru.

Costruiti toate steagurile formate din 3 culori care indeplinesc urmatoarele conditii:
- orice steag trebuie sa contina culoarea verde sau culoarea galben la mijloc.
- culorile din fiecare steag trebuie sa fie distincte.

20. Se citeste un numar natural n. Afisati toate numerele formate din n cifre in care oricare doua cifre alaturate
au paritate diferita.
Ex. Pentru n=4 se vor obtine:
1010
1012
1014
...
2101
2103
...
9898

21. Se citeste un numar natural n si apoi n numere naturale ordonate strict crescator reprezentand valorile a n
bancnote.
Se citeste apoi o suma de bani s si se cere sa se plateasca in toate modurile posibile suma s cu bancnote de
valorile precizate. Se presupune ca avem la dispozitie oricate bancnote de fiecare valoare.
Ex:
n=4
valorile bancnotelor: 1 5 10 50
s=100
Se vor obtine solutii de forma:
2*50

5*10 1*50
10*10
2*5 4*10 1*50
...
35*1 1*5 1*10 1*50
...
95*1 1*5
100*1

22. Se citeste un numar natural n si apoi n numere naturale ordonate strict crescator
reprezentand valorile a n bancnote.
Se citeste apoi o suma de bani s si se cere sa se plateasca in toate modurile posibile suma
s cu bancnote de valorile precizate folosind cel putin o bancnota de fiecare valoare data. Se
presupune ca avem la dispozitie oricate bancnote de fiecare valoare.
Ex:
n=4
valorile bancnotelor: 1 5 10 50
s=100
Se vor obtine solutii de forma:
15*1 1*5 3*10 1*50
15*1 3*5 2*10 1*50
15*1 5*5 1*10 1*50
23. Un student are in sesiune n examene fiecare avand asociat un numar de credite. Pentru a
promova sesiunea el trebuie sa acumuleze cel putin s credite.
Gasiti toate nodurile in care poate el sa isi aleaga examenele pentru a promova sesiunea
astfel incat sa faca un efort minim, adica sa nu mearga la examene fara de care oricum
promoveaza.
Ordinea examenelor nu este importanta, iar daca studentul isi aleage un examen se
considera ca il promoveaza.
Ex:
n=6
creditele: 7 8 10 10 2 6
s=30
Solutii:
10 10 8 7
10 10 8 6
10 10 8 2
10 10 7 6
10 8 7 6
10 8 7 6 (se repeta deoarece poate alege oricare din cele 2 examene cu 10 credite)

24. Se dau in plan n puncte albe si n puncte negre prin coordonatele lor intregi.
Fiecare punct alb trebuie unit cu un singur punct negru pentru a forma in acest fel n segmente.
Se cere sa se realizele n segmente care sa nu se intersecteze, fiecare segment avand o extremitate un punct
alb si cealalta un punct negru.
Exemplu:
Pentru datele de intrare:
3
11
12
13
31
33
32
Se obtine segmentele:
(1,1)-(3,1)
(1,2)-(3,2)
(1,3)-(3,3)

25. Un student are de dat n examene numerotate de la 1 la n intr-o sesiune formata din m zile (m este cel putin
de 2 ori mai mare decat n).
Afisati toate modurile in care isi poate programa studentul examenele astfel incat sa nu dea 2 examene in zile
consecutive si sa dea examenele in ordine de la 1 la n.

Ex:
n=3
m=6
Solutii:
010203
100203
102003
102030
(0 codifica zilele libere)

26. Se citesc doua numere naturale n si m (m mai mic decat n). Afisati toate partitiile multimii {1,2,3, ... , n}
care sunt formate din m submultimi.
Exemplu:
n=4
m=3
Se vor afisa partitiile:
{1 2 } {3 } {4 }
{1 3 } {2 } {4 }
{1 } {2 3 } {4 }
{1 4 } {2 } {3 }
{1 } {2 4 } {3 }
{1 } {2 } {3 4 }

27. Un munte este memorat ca o matrice n*m in care fiecare pozitie reprezinta altitudinea din acel loc.
Intr-o pozitie i0, j0 se afla un alpinist care se poate deplasa in toate cele 8 directii in pozitiile alaturate care au
altitudinea cu cel mult 1 mai mare decat cea pe care se afla alpinistul.
Stiind ca exista o singura valoare maxima in matrice si ea reprezinta altitudinea varfului muntelui, gasiti toate
drumurile pe care alpinistul poate ajunge in varf fara a trece de 2 ori prin aceeasi pozitie.
Solutiile se vor afisa ca matrice si ca sir de cordonate.
Ex:
date.in
44
1111
1115
6764
5432
44
date.out
0000
0004
0653
0021
4,4 4,3 3,4 2,4 3,3 3,2
00
00
89
76
4,4

00
04
53
21
4,3 3,4 2,4 3,3 4,2 4,1 3,1 3,2

00
00
56
43
4,4

00
00
00
21
4,3 4,2 4,1 3,1 3,2

28. Un labirint se codifica printr-o matrice nXm in care 0 sunt pozitii libere, iar -1 reprezinta
zidurile. In pozitia io,jo se afla un soricel care se poate deplasa pe patru directii paralele cu
liniile si coloanele matricii.
Afisati cel mai scurt drum prin care soricelul poate parasi labirintul.
Ex:
date.in
65
-1 -1 -1 -1 -1
0 0 0 0 -1
-1 0 -1 0 -1
0 0 0 0 -1

-1 -1 -1 0 -1
-1 -1 -1 0 -1
34
date.out
-1 -1 -1 -1 -1
0 0 0 0 -1
-1 0 -1 1 -1
0 0 0 2 -1
-1 -1 -1 3 -1
-1 -1 -1 4 -1
3,4 4,4 5,4 6,4
SSS

29. Se considera n piese de domino citite ca perechi de numere naturale, fiecare pe cate un rand de intrare. Se
citeste apoi un numar natural a.
Sa se afiseze toate solutiile de aranjare a acestor piese intr-un lant domino de lungime a, fara a roti piesele.
(Un lant domino se alcatuieste din piese domino astfel incat o piesa este urmata de alta a carei prima
jumatate coincide cu jumatatea a doua a piesei curente.)
Ex: 1,2 2,6 6,8
date.in:
6
12
13
34
23
35
45
3
date.out:
122334
122335
133445
233445

30. Se considera n piese de domino citite ca perechi de numere naturale, fiecare pe cate un rand de intrare. Se

citeste apoi un numar natural a.


Sa se afiseze toate solutiile de aranjare a acestor piese intr-un lant domino de lungime a, cu posibilitatea de a
roti piesele.
(Un lant domino se alcatuieste din piese domino astfel incat o piesa este urmata de alta a carei prima
jumatate coincide cu jumatatea a doua a piesei curente.)
Ex: 1,2 2,6 6,8
date.in:
6
12
13
34
23
35
45
3
date.out:
122331
122334
122335
211334
211332
211335
...
544332
544335

31.

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