Sunteți pe pagina 1din 4

Alte probleme de BACKTRACKING

I. Backtracking folosind permutri, aranjamente, combinri


O grup de studeni trebuie s-i planifice m examene n n zile, n>=m.. In cte moduri i cum se pot programa examenele, tiind c ntr-o zi se poate programa cel mult un examen? 1. Cte numere naturale diferite se pot forma cu cifrele 1, 2, 3, , n, dac n fiecare astfel de numr, orice cifr apare cel mult odat i care sunt acestea? 2. S se afieze tote numerele de n cifre a cror prefixe sunt divizibile cu 2. 3. Se citete de la tastatur un numr natural n<=14, care reprezint dimensiunea unei table de ah. S se genereze toate modalitile de aranjare pe tabl a n ture, astfei nct oricare dou ture s nu se atace. Rezultatele se vor afia ntr-un fiier ture.txt ca n exemplu de mai jos, pentru n=2:

T T

T T

4. S se afieze toate posibilittile de aranjare pe o caset a n melodii, codificate cu numere naturale de la 1 la n, astfel nct melodia x s se cnte dup melodia y, n maximum 10. 5. ntr-o mare nchis sunt n porturi. S se numere i stabileasc toate voiajele prin p porturi (p<=n). Porturile se introduc prin denumiri, dup ce s-au citit valorile pentru n i p. Soluiile vor fi afiate secvenial, pentru a putea fi citite (apsare tast) , numerotat. 6. Se citesc de la tastatur un numr natural n(n<=20) i un numr natural v (v<n). S se scrie un program care afieaz toate numerele de la 1 la n n toate modurile posibile astfel nct ntre oricare dou numere succesive diferena n modul s fie mai mare dect v. Datele de ieire se vor scrie n fiierul ieire.txt. 7. Se citete un numr natural n. S se genereze toate matricile ptratice binare de dimensiune nxn, cu proprietatea c n fiecare coloan exist exact o cifr 0. Ex. Pentru n=3 0 0 0 0 0 1 0 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 0 8. Un grup de n (n<=10) persoane numerotate de la 1 la n sunt aezate pe un rnd de scaune, dar ntre oricare dou persoane vecine s-au ivit conflicte. Scriei un program care afieaz toate modurile posibile de reaezare a persoanelor, astfel nct ntre oricare dou persoane aflate n conflict s stea una sau cel mult dou persoane. Ex. Pentru n=4 programul trebuia s afieze: 3 1 4 2 2 4 1 3 9. Se d un alfabet care conine v vocale i c consoane. Se cere s se genereze toate cuvintele de lungime n care nu conine trei vocale sau trei consoane alturate. 10. Se consider n piese de domino citite ca perechi de numere naturale, fiecare pe cte un rnd de intrare. S se afieze toate soluiile de aranjare a acestor piese ntr-un lan domino de lungime a, citit, fr a roti piesele. ( Un lan domino se alctuiete din piese domino astfel nct o pies este urmat de alta a crei prim jumtate coincide cu jumtatea a doua a piesei curente. 11. Se consider n cuburi (max. 10), numerotate de la 1 la n, de laturi i culori cunoscute. S se numere i se alctuiasc toate turnurile posibile din h cuburi astfel nct fiecare turn s aib stabilitate (orice cub se aeaz peste un altul cu latura mai mare sau egal cu a lui) i s nu existe dou cuburi consecutive de aceeai culoare. Soluiile se vor afia distinct, astfel ca utilizatorul s aib timp s le citeasc, vor specifica numrul turnului i vor cuprinde h grupuri de informaii de tipul: nr. cub, latur, culoare. 12. S se afieze toate modurile de aranjare a elementelor unui ir dat de numere ntregi, astfel nct n irul rezultat s nu existe dou elemente alturate negative. 13. La un festival de muzic pop, s-au nscris n melodii, codificate 1, 2, 3,, n (n>=4). S se afieze toate posibilitile de a stabili ordinea intrrii n concurs a melodiilor, tiind c melodiile m1 i m2 trebuie s evolueze a doua, respectiv penultima (m1, m2 {1, 2,, n}.

Alte probleme de BACKTRACKING

14. La un concurs sportiv s-au nscris n concureni, numerotai 1, 2, ,n. Pentru fiecare concurent se cunoate ara de origine (un ir de caractere). S se afieze toate posibilitile de a stabili ordinea intrrii n concurs a sportivilor, tiind c: - doi sportivi din aceeai ar nu pot evolua unul dup cellalt; - trebuie respectat ordinea cresctoare a numerelor de concurs a sportivilor.

II. Backtracking cu sume


1. S se afieze toate modurile de descompunere a unui numr natural n n sum de p numere naturale distincte. 2. Scriei un program care s afieze toate modalitile prin care se poate plti o sum S folosind n bancnote de valori b1<b2<b3<<bn. Se presupune c avem la dispoziie oricte bancnote din fiecare tip. Numerele n i S, precum i valorile bancnotelor se citesc de la tastatur, iar modalitile de plat vor fi scrise n fiierul bani.out. 3. S se generez toi vectorii diferii, fiecare vector generat fiind format din n elemente cifre de 1 i 0, suma elementelor sale neavnd voie s depeasc valoarea S. 4. S se afieze toate irurile de n paranteze care se nchid corect (2<=n<=20) 5. Se consider o mulime M de numere naturale, avnd n elemente. S se scrie un program care afieaz toate submulimile mulimii M ale cror elemente nsumate sunt egale cu o valoare natural S dat. 6. Orice numr natural se poate scrie ca sum de termeni numere naturale nenule. Astfel 4=3+1=2+2=2+1+1=1+1+1+1, deci n patru moduri. S se scrie numrul n ca sum de numere naturale i s se afieze numrul de posibiliti descoperite. 7. S se scrie n fiierul solutie.txt toate numerele (cte unul pe fiecare rnd) de n cifre egale cu de k ori produsul cifrelor, n i k fiind citite de la tastatur. 8. Se citete de la tastatur un numr natural nenul n<=8. S se genereze toate irurile de lungime n, formate din cifre de 0 i 1, suma elementelor lor s fie egal cu o valoare dat S. 9. Exist n omeri care trebuie s se reprofileze, fiecare n cte una din n meserii. colarizarea omerului i n meseria j prezint costul C[i,j], natural. Toate cele n meserii trebuie s fie ocupate de ctre cei n omeri. Dndu-se n i matricea costurilor C(nxn) s se precizeze toate posibilitile de atibuire a celor n meserii celor n omeri, precum i costul total al colarizrii penru fiecare repartizare. 10. S se afieze toate numerele formate din cifre distincte cu proprietatea c suma cifrelor este S, dat. Soluiile vor fi afiate ntr-un fiier de ieire. Ex : pentru S=3 se afieaz : 102, 12, 120, 201, 21, 210, 3, 30. 11. Se d o matrice ptratic A(nxn). S se precizeze care este suma maxim care se poate obine prin nsumarea elementelor matricii aflate pe linii i coloane diferite. 12. Pentru realizarea orarului unei clase de elevi trebuie s fie programate n fiecare zi, fie o or de informatic din cele trei ore pe sptmn, fie o or de fizic din cele dou ore pe sptmn. n cte moduri se poate face aceast programare, tiind c sptmna are 5 zile lucrtoare? O soluie va fi o succesiune de 5 litere din mulimea {I, F}, soluia IFIIF semnificnd faptul c luni este programat o or de informatic, mari una de fizic, miercuri i joi cte una de informatic, vineri ultima de fizic. 13. La o admitere se dau n examene. La primul examen se pot obine de la 0 la p1 puncte, la al doilea se pot obine de la 1 la p2 puncte .a.m.d.. Pentru reuit, un candidat trebuie s obin cel puin m puncte n total. Din fiierul f.in se citesc n, m i irul p1, p2, ,pn, naturale. S se scrie n fiierul f.out toate variantele de de punctaje ce trebuie obinute la cele n examene i care conduc la reuita la admitere. 14. S se afieze toate numerele de cte n cifre (0<n<=10) cu suma cifrelor egal cu S. 15. ntr-o mare nchis sunt n porturi. Staionarea ntr-un port se taxeaz printr-un cost asociat. S se stabileasc toate voiajele distincte prin p porturi (p<=n) care nu depesc un cost total de staionare dat. Porturile se introduc prin denumiri, dup ce s-au citit valorile pentru n i p naturale, costurile i costul total fiind date ca numere reale Soluiile vor fi afiate secvenial, pentru a putea fi citite (apsare tast), fiecare afiare coninnd: nr. voiaj, lista denumirilor porturilor, costul total al voiajului.. 16. S se elaboreze toate variantele de chestionare ce se pot obine dintr-un set total de n ntrebri (n<=20) care s aib ntre a i b ntrebri, iar ntrebrile s totalizeze minim p puncte i maxim q puncte. Se citesc n ordine: numrul de ntrebri, apoi fiecare ntrebare, text de maximum 100 de caractere, urmat de punctajul su i, la sfrit, limitele a, b, p i q.
2

Alte probleme de BACKTRACKING

17. Fiind dat un numr natural pozitiv n, s se produc la ieire toate descompunerile sale ca sum de numere prime. 18. In fiierul text numere.in se dau : - pe prima linie un numr natural n<=15; - pe a doua linie n numere naturale x[1], x[2], ,x[n] separate printr-un spaiu ; - pe a treia linia un numr natural S cu cel mult 9 cifre. Se cere s se determine irul de semne + i ce trebuiesc puse n n faa numerelor x[1], x[2], , x[n] pentru ca rezultatul expresiei s fie egal cu S. Aceste iruri se vor scrie cte unul pe fiecare rnd ntr-un fiier text solutie.out.

III. Backtracking colorat


1. Se cere s se coloreze o hart cu n ri, folosindu-se numai 4 culori, oricare dou ri vecine s fie colorate diferit. 2. Se citesc 9 denumiri de culori (maximum 16 caractere fiecare) din care trebuie s se alctuiasc toate drapelele tricolore posibile, cu condiia ca la mijloc s fie numai o culoare din ultimele dou citite. Fiecare soluie va aprea pe rnd, cte una, la cererea utilizatorului (acionarea unei taste). 3. Pe o tij vertical se gsesc amestecate, m bile de n culori diferite. S se separe aceste bile, punndu-le pe n tije, conform celor n culori. 4. Avem la dispoziie 6 culori, alb, galben, rou, verde, albastru, negru. S se precizeze toate drapelele tricolore care se pot proiecta, tiind c orice drapel are prima culoare galben sau verde, cele trei culori de pe drapel sunt distincte, iar culoarea din mijloc trebuie s fie obligatoriu rosie. Afiarea se va face colorat, fiecare nume de culoare fiind scris explicit, n culoarea sa(ex: cuvntul rou va fi scris cu culoarea roie). 5. Utiliznd m culori (maximum 5), numerotate de la 1 la m, s se coloreze n toate modurile posibile n piloni (maximum 10), care iniiali sunt albi, aflai pe o suprafa oarecare, dac acetia se vd ntre ei i doi piloni care se vd ntre ei nu trebuie s aib aceeai culoare. Pilonii sunt n relaie de se vd ntre ei dac orice linie imaginar care unete vrfurile a doi piloni nu trece printr-un cmp ocupat de alt pilon. Datele de intrare se compun din: - un numr natural n reprezentnd numrul de piloni - perechi x, y , pe cte un rnd fiecare, pn la ntlnirea sfrit de fiier(^Z), pereche ce semnific faptul c x i y se vd - un numr natural m, numrul de culori; - denumirile culorilor, string-uri, cte unul pe fiecare rnd. 6. Se consider n mrgele de culori nu neaprat distincte. S se scrie un program pentru afiarea tuturor posibilitilor n care mrgelele se pot nira astfel nct s nu existe dou mrgele alturate de aceeai culoare.

IV. Alte probleme de backtracking


1. In vederea desfurrii unui concurs, trebuie format o delegaie din p dintre cei n profesori ai unui liceu (p, n N * , p n 30 ). Scriei un program care pentru valorile citite de la tastatur ale lui n i p, va genera, folosind backtracking, n fiierul comisie.bac toate posibilittile de alctuire a delegaiei. Fiecare soluie va fi afiat pe o linie separat n fiierul de ieire, elementele fiind separate prin spaii. Considerai profesorii numerotai de la 1 la n. Programul va fi comentat. 2. Generai prin metoda backtracking toate numerele naturale cu n cifre (1<=n<=9) care sunt supermultiple de p (p>1). Un numr este supermultiplu de p, dac att numrul ct i toate numerele obinute din el prin tierea succesiv a cifrelor sale ncepnd cu cifra unitilor sunt multiple de p. Valorile n i p se introduc de la tastatur i sunt corecte. Descriei algoritmul pe care l folosii. 3. Numim numrul x superprim dac att x ct i toate numerele obinute prin amestecarea cifrelor lui x sunt numere prime. Pentru o valoare n citit, scriei un program Pascal care s determine dac acesta reprezint un numr superprim sau nu. 4. Ex: pentru n=3 i p=2 numrul 246 este supermultiplu de 2 deoarece numerele 246, 24, 2 sunt multiple de p.
3

Alte probleme de BACKTRACKING

5. Se citete un numr natural n. S se genereze toate numerele care au n reprezentarea lor binar attea cifre de 1 i de 0 cte are i reprezentare numrului n n baza 2. 6. Se citesc de la tastaur dou numere naturale n i m (o<m<12). S se afieze toate irurile de n litere distincte, litere alese dintre primele m ale alfabetului englez. Ex : pentru n=2 i m=4 se afieaz, nu neaprat n aceast ordine, irurile :AB, BA, AC, CA, AD, DA, BC, CB, BD, DB, CD. 7. Civa copii trebuie s fie vizitai de Mo Crciun. Scriei un program care determin toate modurile diferite n care pot fi ei azai n lista lui Mo Crciun, astfel nct s fie toi vizitai n ordinea descresctoare a vrstei lor. Se citesc de la tastatur : n, numrul de copii (0<n<10), apoi numele i vrsta fiecruia dintre cei n copii. Se scriu n fiierul craciun.txt, pe linii diferite, liste cu numele copiilor, n irdinea n care vor fi vizitai de Mo Crciun. O list este format din toate cele n nume ale copiilor, ntr-o anumit ordine, orice dou nume succesive fiind desprite printr-un spaiu. Ex : pentru datele de intrare n=4 Dan 6 Cristina 4 Corina 2 Iulia 4 se scriu n fiierul craciun.txt urmtoarele soluii: Corina Iulia Cristina Dan Corina Cristina Iulia Dan 8. s se scrie n fiierul soluii.dat toate numerele de n (0<n<10) cifre, care adunate fiecare cu numrul obinut prin inversarea ordinii cifrelor saledau un numr ptrat perfect.