Documente Academic
Documente Profesional
Documente Cultură
Fiecare student trebuie să-și aleagă din lista de mai jos exact două
probleme care se rezolvă folosind tehnici de programare diferite!
A. Metoda GREEDY
1. Fie numărul real r, numărul natural nenul n şi n+1 numere reale a0,a1,…,an.
Ştiind că cele n+1 numere reale reprezintă coeficienţii unui polinom f de grad n,
să se determine o permutare a lor astfel încât valoarea polinomului f(x) să fie
maximă.
6. Într-o o facultate, fiecărui student dintr-o serie îi sunt repartizate în cadrul primei
teme de laborator la Tehnici de programare câte 3 probleme dintr-o listă dată.
Cunoscând timpii de evaluare ai fiecărei probleme dintre cele n din listă, precum
si distribuția problemelor pe fiecare student în parte, ajutați profesorii evaluatori
să stabilească ordinea de evaluare a temelor astfel încât să se minimizeze timpul
mediu de aşteptare a notelor.
10. Se consideră o listă formată din n proiecte pe care trebuie să le execute o echipă
de programatori din Departamentul Dev. Pentru fiecare proiect se cunoaște
termenul său limită, precum și bonusul pe care îl va obține echipa dacă proiectul
este finalizat la timp (în caz contrar, bonusul va fi 0). Durata de executare a
oricărui proiect se consideră egală cu o zi. Ajutați-vă echipa scriind un program
care să determine o modalitate de planificare a executării proiectelor astfel încât
bonusul obținut să fie maxim!
B. Metoda BACKTRACKING
2. La un dineu sunt invitate n familii formate din soţ şi soţie. Să se afişeze toate
modalităţile distincte de aşezare a celor 2n invitaţi în jurul unei mese rotunde
astfel încât orice bărbat să fie încadrat de două femei şi orice femeie să fie
încadrată de doi bărbaţi şi, în plus, să nu existe doi soţi aşezaţi unul lângă
celălalt.
3. După o noapte de chef Cetăţeanul Turmentat se află în faţa unei mari probleme:
trebuie să urce cele n trepte până la uşa casei sale. Din cauza stării de ebrietate
avansate Cetăţeanul Turmentat nu poate să urce decât fie o treaptă, fie două.
Ajutaţi-l, indicându-i toate modurile în care el poate să urce cele n trepte,
precum şi câte moduri are în total la dispoziţie.
10. Scrieţi un program care, folosind metoda backtracking, afişează toate modurile
de a aranja elementele unui şir dat de numere întregi astfel încât in şirul rezultat
sa nu existe doua elemente negative alăturate.
3. Sa se determine cel mai lung subșir al unui sir format din n numere naturale
nenule cu proprietatea că orice număr din subșir, mai puțin primul, se divide cu
predecesorul său.
6. Vitrina frigorifică a celebrei firme Cheese Inc. este formată din n rafturi
(1≤n≤100), fiecare raft fiind împărţit la rândul său tot în câte n compartimente,
fiecare compartiment putând să conţină cel mult 300 grame de brânză. Rafturile
sunt numerotate de la 1 la n de jos în sus, iar pe un raft compartimentele sunt
numerotate, de la stânga spre dreapta, tot cu numerele de la 1 la n. Pentru a
permite o bună aerisire a brânzeturilor, fiecare compartiment al vitrinei (mai
puţin cele aflate pe marginile laterale) este prevăzut cu câte 6 găuri de aerisire
(3 pe latura superioară şi 3 pe latura inferioară), aşa cum se poate observa din
figura alăturată. Condiţiile climaterice deosebite de lângă vitrina frigorifică (mai
ales aroma deosebită a curenţilor de aer) l-au determinat pe şoricelul Mickey să-
şi stabilească domiciliul, de ani buni, în imediata vecinătate a vitrinei. Zi de zi însă
şoricelul Mickey este obsedat de o singură idee: "Cum ar trebui să procedez
astfel încât să pot fura cât mai multă brânză din vitrină, fără să fiu prins de
vecinul meu, sângerosul motan Kat?". Din păcate (sau din fericire) alogritmii nu
sunt un fel de brânză, deci şoricelul Mickey nu a reuşit să găsească singur
rezolvarea problemei care-l frământă aşa de tare. Tot ceea ce a reuşit el au fost
următoarele observaţii, esenţiale de altfel:
singurul raft pe care mă pot sui de pe podea este raftul 1 (cel de jos), restul
fiind prea sus;
ca să mă pot deplasa mai repede trebuie să nu pierd vremea rozând pereţii
dintre compartimente, ci voi trece dintr-un compartiment în altul printr-o
gaură de aerisire;
deoarece motanul, dacă se prinde că fur din vitrină, mă caută plimbându-se
de-a lungul rafturilor trebuie ca dintr-un compartiment să trec neapărat într-
un compartiment aflat pe un raft imediat mai sus, ca să îmi piardă momentan
urma;
când am ajuns sus, pe vitrină, pot să stau liniştit şi să mănânc toată brânza
adunată!
Scrieţi un program care să găsească un traseu pe care să-l urmeze Mickey astfel
încât cantitatea de brânză adunată să fie maximă şi, evident, să respecte toate
observaţiile făcute de el!
7. Nea Gogu este patronul unui nou depozit en-gros de sârmă. Iniţial, în depozit se
găseşte o singură bucată de sârmă având o lungime de x metri şi o maşină de
tăiat sârma. După un timp, nea Gogu primeşte n comenzi, în fiecare comandă
fiind cerută câte o bucată de sârmă de o anumită lungime. Dornic de îmbogăţire,
nea Gogu vrea să onoreze un număr maxim de comenzi m, fără a irosi însă
sârma atunci când o taie în bucăţi. Pentru aceasta, el se gândeşte să procedeze
astfel: alege mai întâi o anumită comandă în care se cere o bucată de sârmă de
lungime x1 astfel încât să poată tăia toată bucata de sârmă de lungime x într-un
număr întreg n1 de bucăți de lungime x1 (pentru a nu pierde nici o bucăţică de
sârmă), taie bucata respectivă de sârmă în mod corespunzător şi apoi onorează
comanda. În continuare nea Gogu procedează în mod similar, adică alege o altă
comandă în care se cere o bucată de sârmă de lungime x2 astfel încât să poată
tăia fiecare din cele n1-1 bucăţi de sârmă de lungime x1 rămase într-un număr
întreg n2 de bucăţi de lungime x2, taie cele n1-1 bucăţi rămase în mod
corespunzător şi onorează şi această comandă…şi tot aşa până când nu mai
poate onora astfel nici o comandă din cele rămase. Mai mult, nea Gogu îşi dă
seama că poate economisi şi energia electrică consumată de maşina de tăiat
dacă alege cele m comenzi astfel încât numărul total de bucăţi de sârmă tăiate t
să fie minim.
10. Considerăm o bară metalica cu lungimea de n metri, din care se pot tăia bucăţi
de lungime 1,2,…,n metri. Cunoscând preţurile de vânzare ale bucăților de
1,2,…,n metri, găsiţi o modalitate de tăiere a barei astfel încât câştigul obţinut să
fie maxim.