Sunteți pe pagina 1din 8

BACKTRACKING – PROBLEME

1. Să se afişeze toate permutările unei mulţimi formate din n (n<10) numere naturale, a_1, a_2,
…, a_n (0<a_i<1000), date de la tastatură. Dacă cele n elemente nu formează mulţime (nu sunt
distincte), se va afişa mesajul EROARE. În caz contrar, se vor afişa, câte una pe linie,
permutările numerelor date, cu câte un spaţiu între elementele unei permutări.
Exemplu: n=4 7 9 51 9 se va afişa: EROARE
n=3 5 11 2 se va afişa: 5 11 2
5 2 11
11 5 2
11 2 5
2 11 5
2 5 11

2. Să se afişeze toate numerele formate din cifre distincte cu proprietatea că suma cifrelor este S.
Valoarea variabilei S se citeşte de la tastatură. Soluţiile vor fi afişate pe ecran.
Exemplu: S=3 se va afişa: 102 12 120 201 21 210 3 30

3. Un grup de n (n<=10) persoane numerotate de la 1 la n sunt aşezate pe un rând de scaune, dar


între oricare două persoane vecine s-au ivit conflicte. Scrieţi un program care afişează toate
modurile posibile de reaşezare a persoanelor, astfel încât între oricare două persoane aflate în
conflict să stea una sau cel mult două persoane.
Exemplu: n=4 se va afişa: 3 1 4 2
2 4 1 3

4. Să se genereze şi să se afişeze toate numerele prime de n cifre (n<10) formate numai cu


ajutorul cifrelor 2, 0 şi 9. Valoarea numărului natural n se citeşte de la tastatură.
Exemplu: n=3 se va afişa: 229
929

5. Generaţi toate numerele naturale cu n cifre (1<=n<=9) care sunt “super multiple” de k (k>0).
Un număr este “super multiplu” de k, dacă atât numărul cât şi toate numerele obţinute din el prin
tăierea succesivă a cifrelor sale începând cu cifra unităţilor sunt multiple de k. Valorile n şi k se
introduc de la tastatură şi sunt corecte.
Exemplu: n=3 k=2 unul din numere este 246

6. Într-un magazin se găsesc spre vânzare n (n<=20) produse, numerotate de la 1 la n. Un


cumpărător, care dispune de o sumă de bani S, doreşte să cheltuiască toţi banii pe care îi are în
acest magazin, dar fără a cumpăra două produse de acelaşi fel. Cunoscând preţul fiecărui produs,
scrieţi un program care să afişeze toate posibilităţile acestui cumpărător de a-şi cheltui banii.
Se citesc de la tastatură valorile S, n şi apoi cele n numere naturale reprezentând preţurile celor n
produse. În fişierul de ieşire MAGAZIN.OUT se vor scrie toate soluţiile, câte o soluţie pe fiecare
linie. O soluţie este constituită din numerele de ordine ale produselor cumpărate, separate prin
câte un spaţiu. Dacă nu există soluţii, fişierul de ieşire va fi gol.
Exemplu: n=5 S = 100 MAGAZIN.OUT
preţurile: 20 50 70 30 60 3 4
1 2 4

7. Se citeşte un număr natural n. Să se genereze toate numerele naturale a căror reprezentare


binară au acelaşi număr de cifre 0 ( semnificative ) şi respectiv 1 ca în reprezentarea binară a
numărului n.
Exemplu: n = 53 se va afişa: 39 43 45 46 51 53 54 57 58 60

8. Se dau n bile albe şi albastre. Fiecare bilă are o etichetă de tip caracter. Să se afişeze toate
posibilităţile de a selecta k bile din care cel puţin a să fie albe. Citirea datelor de intrare se va
face din fişier. Afişarea soluţiilor se va face în fişier. Cele două fişiere vor avea formatul din
exemplu.
Exemplu: 8.IN 8.OUT
5 3 2 (n k a) a b d
alb albastru albastru alb alb a b f
a b e d f a e d
a e f
a d f
b d f
e d f

9. Fiind date n cuburi etichetate de la 1 la n de laturi l [ i ] şi culori c [ i ], 1<=i<=n, să se afişeze


toate turnurile de k cuburi care se pot forma astfel încât cuburile din turn să aibă laturile în
ordine descrescătoare, iar culorile cuburilor alăturate să fie diferite.
Exemplu: n=5 k=3 l=(1,2,3,4,5) c=(1,2,1,3,4)
se va afişa: (321) (421) (432) (521) (532)
(541) (542) (543)

10. Se dau n persoane 1 .. n şi p perechi de forma (i,j) cu semnificaţia că i este fiul lui j. Să se
aşeze cele n persoane în rând astfel încât fiecare persoană să se afle înaintea fiilor săi.
Exemplu: n = 10 p = 9 ( 4 1 ) ( 4 5 ) ( 1 6 ) ( 1 8 ) ( 6 3 ) ( 6 7 )
( 8 10 ) ( 8 9 ) ( 9 2 )
se va afişa: 2 3 5 7 6 9 10 8 1 4
2 5 9 10 8 3 7 6 1 4
ş. a. m. d.

11. Să se genereze toate şirurile strict crescătoare formate din numere naturale cu proprietatea că
primul element din şir este n, iar ultimul element al şirului este n+k. Numerele naturale n şi k
(0<n<20, 0<k<16) sunt citite de la tastatură. Fiecare şir generat va fi scris pe o linie, elementele
unui şir fiind separate prin câte un spaţiu.
Exemplu: n=7 k=3 se va afişa: 7 8 9 10
7 8 10
7 9 10
7 10

12. Să se descompună un număr natural n în toate modurile posibile, ca sumă de p numere


naturale nenule distincte. Soluţiile care diferă doar prin ordinea termenilor nu se vor considera
distincte.
Exemplu: n = 10 p=3 se va afişa: 1 2 7
1 3 6
1 4 5
2 3 5

13. Să considerăm o tablă de şah de dimensiuni n*n (n<=20, n citit de la tastatură). Să se afişeze
pe ecran toate posibilităţile de a aşeza n ture pe această tablă de şah astfel încât oricare două ture
să nu se atace. Două ture se atacă dacă se găsesc pe aceeaşi linie sau pe aceeaşi coloană. O
soluţie va fi afişată pe o linie ca o secvenţă c1, c2, …, cn, unde ci reprezintă coloana în care este
plasată tura de pe linia i.

14. Să se genereze toate şirurile de n note muzicale din mulţimea {Do, Re, Mi, Fa, Sol, La, Si}.
Orice notă poate să nu apară sau se poate repeta în cadrul unui şir.

15. Se citesc n, p şi apoi n litere distincte. Afişaţi toate cuvintele care se pot forma cu p dintre
ele. Citirea datelor de intrare se va face din fişier. Afişarea soluţiilor se va face în fişier. Cele
două fişiere vor avea formatul din exemplu.
Exemplu: 15.IN 15.OUT
53 niy nis nid nyi nys
niysd nyd nsi nsy nsd ndi
ndy nds iny ins ind
iyn iys iyd isn isy
isd idn idy ids yni
yns ynd yin yis yid
ysn ysi ysd ydn ydi
yds sni sny snd sin
siy sid syn syi syd
sdn sdi sdy dni dny
dns din diy dis dyn
dyi dys dsn dsi dsy

16. Să se genereze toate cuvintele de lungime n (n<=10) ale alfabetului morse, formate numai
din punct şi liniuţă, care nu încep şi nu se termină cu caracterul liniuţă.

17. Se consideră un şir de n numere întregi distincte. Să se genereze submulţimile de k numere


din şir în care se găsesc cel puţin 3 numere care pot reprezenta laturile unui triunghi.

18. Se citeşte un număr natural n. Să se genereze toate matricele pătrate cu elemente binare (0, 1)
de dimensiune n cu proprietatea că pe fiecare coloană există o singură cifră de 0.
Exemplu: n = 2 se va afişa: 0 0 0 1 1 0 1 1
1 1 1 0 0 1 0 0

19. Se citeşte de la tastatură un număr natural n (n<=20) şi un număr natural v. Scrieţi un


program care afişează toate numerele de la 1 la n în toate modurile posibile, astfel încât între
oricare două numere afişate în poziţii învecinate, diferenţa în modul să fie mai mare decât
valoarea dată v. Datele de ieşire se vor scrie în fişierul “ieşire.dat”. în cazul în care nu există
soluţie, în fişierul de ieşire se va scrie: “Nu exista solutie”.
Exemplu: n=4 v=1 IESIRE.DAT
3 1 4 2
2 4 1 3

20. Avem la dispoziţie 6 culori: alb, galben, roşu, verde, albastru şi negru. Să se precizeze toate
drapelele tricolore care se pot proiecta, ştiind că trebuie respectate regulile:
– orice drapel are culoarea din mijloc galben sau verde;
– cele trei culori de pe drapel sunt distincte.
Afişarea soluţiilor se va face în fişier. Se va afişa de asemenea şi numărul soluţiilor.
Exemplu: 20.OUT
alb galben rosu
alb galben verde
alb galben albastru
alb galben negru
alb verde galben
...
40

21. Realizaţi un program care generează combinaţii de n cifre 0 şi 1 cu proprietatea că în orice


grup de 3 cifre consecutive există cel puţin o cifră de 1. Soluţiile se vor afişa câte 6 pe un rând al
ecranului.
Exemplu: n=4 se va afişa: 0010 0011 0100 0101 0110 0111
1001 1010 1011 1100 1101 1110
1111

22. Scrieţi un program care afişează pe ecran toate secvenţele de n litere (n număr natural par
citit de la tastatură) din mulţimea {A, R, G, V}, secvenţe care se pot construi respectând
următoarele reguli:
– nu plasăm două litere identice una lângă alta;
– trebuie să utilizăm exact n / 2 litere R.
Fiecare soluţie se va afişa pe câte o linie a ecranului sub forma unui şir de litere.
Exemplu: n=2 se va afişa: AR RA RG GR RV VR

23. Se citesc de la tastatură un număr natural n (0<n<=10) şi apoi n valori naturale a1, a2, …, an.
Afişaţi pe ecran toate posibilităţile de a intercala între toate numerele a1, a2, …, an operatorii +
şi – astfel încât evaluând expresia obţinută de la stânga la dreapta, la fiecare pas rezultatul
obţinut să fie strict pozitiv. Fiecare soluţie se va afişa pe câte o linie.
Exemplu: n=3 a1 = 3 a2 = 5 a3 = 2
se va afişa: 3+5+2
3+5–2

24. Se citesc de la tastatură două numere n (0<n<15) şi s (0<s<106) şi apoi n valori întregi
distincte, fiecare valoare aparţinând intervalului [–1000,1000]. Să se determine toate mulţimile
de numere dintre cele date, fiecare mulţime având proprietatea că suma elementelor ei este egală
cu s.
Fiecare mulţime se va afişa pe o linie, elementele ei fiind scrise în ordine crescătoare, despărţite
prin câte un spaţiu sau câte o virgulă..
De exemplu, pentru n=7, s=61 şi valorile 12, 61, 22, 57, 10, 4, 23, se vor afişa, pe linii distincte,
următoarele mulţimi:
4 12 22 23
4 57
61

25. Să se genereze toate şirurile formate din n cifre, fiecare şir generat având următoarele
proprietăţi:
– conţine numai cifre din mulţimea {1, 2, 3, 4};
– orice două cifre alăturate sunt fie ambele pare, fie ambele impare.
Numărul natural n (3<=n<=15) se citeşte de la tastatură. Toate soluţiile vor fi scrise una după
alta, cu spaţii între soluţii, fiecare şir fiind scris fără spaţii între cifrele ce-l formează.
Exemplu: n=3 se va afişa: 111 113 131 133 311 313 331 333
222 224 242 244 422 424 442 444

26. Se citeşte de la tastatură un număr natural n (n<15). Să se genereze toate şirurile formate din
numerele 1, 2, …, n astfel încât fiecare valoare să apară exact o dată într-un şir, iar valorile pare
să se găsească totdeauna “la locul lor”: 2 pe a doua poziţie din şir, 4 pe a patra poziţie din şir, 6
pe a şasea poziţie în şir etc. Fiecare şir se va afişa pe un rând al ecranului, cu spaţii între
elementele ce-l formează.
Exemplu: n=6 se va afişa: 1 2 3 4 5 6
1 2 5 4 3 6
3 2 1 4 5 6
3 2 5 4 1 6
5 2 1 4 3 6
5 2 3 4 1 6

27. Fie o tablă dreptunghiulară, împărţită în n*m căsuţe identice. Iniţial, într-una din căsuţe se
află un pion care se poate deplasa pe orizontală sau verticală fără a putea ieşi din cadrul tablei.
Dându-se poziţia iniţială şi cea finală a pionului, precum şi de câte ori poate să treacă acesta prin
fiecare poziţie, se cere să se reconstituie traseul parcurs de pion.

28. Un soldat având la dispoziţie un detector de mine trebuie să parcurgă un teren minat având
forma unei table dreptunghiulare de dimensiune m*n. În fiecare din pătratele tablei poate fi
amplasată o mină. Soldatul porneşte dintr-un colţ al terenului şi trebuie să ajungă în colţul opus.
Să se determine toate modalităţile în care soldatul poate parcurge terenul minat.

29. Se dă un lac îngheţat sub forma unui tablou m*n. O broscuţă se găseşte în poziţia (1,1), iar în
poziţia (m,n) se găseşte o insectă. În gheaţă sunt găuri ale căror coordonate se cunosc. Găsiţi
drumul cel mai scurt până la insectă şi înapoi ştiind că: deoarece broscuţa visa să fie cal, ea va
sări ca un cal de şah. În punctele în care păşeşte broscuţa gheaţa cedează. Broscuţa nu poate păşi
decât pe gheaţă.

30. Pe un teren de dimensiune dreptunghiulară cu denivelări se află un sportiv care doreşte să se


antreneze pentru un concurs de alpinism. Cunoscând altitudinea fiecărei porţiuni din teren şi
poziţia iniţială a alpinistului, să se determine traseele de lungime minimă pe care trebuie să le
parcurgă sportivul pentru a ajunge într-o poziţie de altitudine maximă. Se ştie că sportivul nu
doreşte să coboare deloc, dar poate merge pe loc drept. De asemenea el se poate deplasa
ortogonal sau diagonal cu un singur pas.
Exemplu: n=5 m=5 poziţia de plecare: (x,y) = (4,2)
16 2 12 20 13
4 5 9 3 15
8 13 16 19 20
14 5 7 7 9
18 3 16 8 20
o soluţie: 4 2; 3 3; 3 4; 3 5

31. Un soldat trebuie să parcurgă un teren minat pentru a ajunge în liniile proprii. Se cere cel mai
scurt drum prin care soldatul ajunge nevătămat la camarazii săi. Se dau: poziţia iniţială a
soldatului (x,y), poziţiile minelor cu valoarea 1 în matrice şi se ştie că propriile linii se află în
afara terenului, pe orice parte a sa. Deplasarea soldatului se face doar ortogonal. Se va citi din
fişierul "SOLDAT.IN" şi se va afişa în "SOLDAT.OUT".
Exemplu: n=5 m=5 x=2 y=2
se va afişa: 11101 00000
10010 01000
00100 32000
00000 00000
01000 00000

32. Gigel se află în poziţia (x0,y0) a unui teren de dimensiune n*m. El poate face paşi doar pe
anumite lungimi date de la tastatură în una din direcţiile N, S, E, V şi nu poate păşi într-o poziţie
mlăştinoasă pe teren (poziţiile mlăştinoase se citesc de la tastatură). Se cer toate modurile pentru
ca Gigel să ajungă în poziţia finală (x1,y1), fără ca el să treacă de două ori prin aceeaşi căsuţă.
Exemplu: GIGEL.IN GIGEL.OUT
5 8 1 2 3 4 7 (n m paşi) 01*045*0
1 1 5 5 (x0 y0 x1 y1) 00*000*0
de la tastatură: 0 0 1 0 0 0 1 0 02003000
00100010 00000000
00000000 00000600
00000000
00000000

33. Pe o tablă de şah de dimensiune n se află un cal pe poziţia (x0,y0). Se cere cel mai scurt
traseu pe care trebuie să-l parcurgă calul pentru a ajunge în poziţia (x1,y1) fără a trece de două
ori prin aceeaşi poziţie şi ştiind că există anumite căsuţe inundate, unde calul nu poate sări.
Exemplu: CAL.IN CAL.OUT
5 1 1 5 5 (n x0 y0 x1 y1) 10000
00000 00030
00100 02000
00010 00400
00000 00005
01100

34. Pentru dotarea a m laboratoare şcolare, Inspectoratul Şcolar a achiziţionat n echipamente


electronice distincte ( 100 >= n >= m ). Echipamentele au fost înregistrate în gestiune cu
numerele 1, 2, ..., n. Inspectoratul doreşte să repartizeze aceste echipamente celor m laboratoare
şcolare astfel:
– fiecare să primească cel puţin un echipament ;
– valorile echipamentelor electronice repartizate fiecărui laborator să fie egale.
Să se scrie un program care să citească numerele naturale n şi m ( 100 >= n >= m ), preţurile p 1,
p 2, .., p n ale echipamentelor electronice ( numere reale pozitive ) şi care să furnizeze toate
modalităţile de repartizare a echipamentelor electronice cu respectarea cerinţelor, specificându-
se, pentru fiecare laborator, numerele echipamentelor repartizate. Dacă nu se poate face
repartizarea, se va afişa mesajul Imposibil.
Exemple: m = 4 n = 5 preţurile: 1 2 3 4 5
se va afişa: Imposibil
m = 3 n = 4 preţurile: 10 3 7 10
se va afişa soluţia: valoarea: 10
laborator 1: 1
laborator 2: 2 3
laborator 3: 4
împreună cu toate celelalte permutări ( în număr de 5 ) ale acestei soluţii.

35. Un pictor are o pictură pe o pânză de formă pătratică, împărţită cu n linii şi n coloane ( n
număr natural nenul, n <= 50 ) în n 2 pătrate identice. Pătratele sunt colorate cu una din culorile:
alb, galben şi albastru. Pictorul doreşte să recoloreze n pătrate albe sau galbene de pe pânză cu
culoarea roşie. El consideră că pictura va fi perfectă dacă nu vor exista două pătrate roşii pe
aceeaşi linie, coloană sau diagonală.
Cunoscându-se pictura în forma iniţială, codurile culorilor pătratelor fiind reţinute într-o matrice
pătratică c cu n linii şi cu valori în { 1, 2, 3 }, cod 1 – culoarea albă, 2 – galbenă, 3 – albastră,
scrieţi un program pentru a genera toate variantele de recolorare a pătratelor în conformitate cu
dorinţa pictorului. Dacă nu este posibil, se va afişa mesajul Imposibil. Se consideră culoarea
roşie codificată cu numărul 4.
Exemplu: n=4 matricea culorilor c se va afişa:
3 1 2 3 3 4 2 3 3 1 4 3
2 1 3 1 2 1 3 4 4 1 3 1
1 2 3 1 4 2 3 1 1 2 3 4
3 1 2 1 3 1 4 1 3 4 2 1

36. Copiii așteaptă jucării de la Moș Crăciun. Scrieți un program care determina toate modurile
diferite in care ei pot sa fie așezați in lista, astfel încât să fie vizitați toți copiii si vizitele sa se
facă in ordinea descrescătoare a numărului de jucării dorite de fiecare. Se citesc de la tastatura: n,
numărul de copii, apoi numele si numărul de jucării cerut de fiecare dintre cei n copii. Sa se scrie
numele copiilor, in ordinea in care vor fi vizitați de Moș Crăciun.

Exemplu: pentru datele de intrare: n=4

Dan 2

Cristina 4

Corina 6

Iulia 4

se scriu următoarele soluții:

Corina Iulia Cristina Dan

Corina Cristina Iulia Dan

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