Sunteți pe pagina 1din 20

Fie secventa Java int x = 1, y, z = 3, t; x += y = z += t = 5; Atunci:

Executia programului Java class T1 { public static void main(String[] a){ int x = 5; int y = (x = 4)*x; System.out.println(y); } } va afisa: 20 16 5 4 Se considera operatia de impartire in virgula mobila (in limbajul Java). Daca unul dintre operanzi este NaN atunci rezultatul este NaN Adevarat Fals In Java, metoda clone() a clasei Object creeaza un obiect nou al clasei folosind constructorul implicit creeaza si returneaza o copie a obiectului curent returneaza codul asociat constructorului implicit testeaza daca obiectul specificat este o clona a obiectului curent

In Java, numarul nivelurilor de acces la membrii unei clase este 1 3 4 2 Daca doua atribute cu acelasi nume sunt mostenite de o interfata Java atunci se obtine: mostenire multipla ambiguitatea atributului clonarea structurilor de date Numarul metodelor implementate de o interfata Java este: 0 1 oricate sunt necesare Daca x este de tip double (in Java) atunci rezultatul x != x este true daca si numai daca x este +0.0 NaN -0.0 Pentru a obtine o reprezentare a adresei interne a unei variabile obiect (in Java) se utilizeaza metoda getClass() din clasa Class metoda hashCode() din clasa Object operatorul & metoda getName() din clasa Class Orice obiect Java poate fi convertit la tipul String. Adevarat Fals

In Java este obligatorie definirea a cel putin unei clase. Adevarat

Fals

Derivarea unei clase Java se va specifica folosind cuvantul cheie super extends this

Numarul superclaselor clasei Object este: 1 infinit 0

O metoda Java definita in alt limbaj de programare este o metoda abstracta nativa

O metoda declarata private este accesibila subclaselor din acelasi pachet. Adevarat Fals Un fir de executare Java este o instanta a unei clase derivate din clasa Thread o instanta a unei clase care implementeaza interfata Runnable fie un obiect al unei clase a carei superclasa este clasa Thread, fie un obiect al unei clase care implementeaza interfata Runnable Un fir de executare Java poate fi pus fortat in coada de asteptare (pentru a intra in executare) folosind metoda start() stop() yield() exit() Metoda destroy() elimina, din sistem, firul de executare si elibereaza toate resursele care ii fusesera alocate.

distruge firul de executare fara a face dealocarile necesare trece firul de executare in starea blocat Java implementeaza conceptul de grup de fire de executare utilizand clasa ThreadGroup clasa Thread interfata Runnable In Java, cuvantul cheie syncronized se refera la sincronizarea comunicarii intre firele de executare specificarea datelor care vor fi accesibile tuturor firelor de executare excluderea mutuala proprietatea de continuitate Metoda care se suprascrie la crearea unui fir de executare Java este start() run() main() In Java, un fir de executare terminat poate fi repornit folosind start(). Adevarat Fals In Java, pentru crearea unui fir de executare se utilizeaza functia fork() operatorul new functia init() Un fir de executare Java trece in starea terminat atunci cand ultima actiune a metodei run() s-a incheiat a fost apelata metoda stop() a fost apelata metoda sleep() una din afirmatiile a) sau b) este adevarata In Java nu pot fi create fire de executare de tip daemon. Adevarat Fals In Java, pentru a crea un fir de executare de tip daemon, metoda setDaemon() este apelata inaintea metodei start() dupa metoda start() niciodata In amfiteatrul Studio al Universitatii Spiru Haret din Bucuresti se organizeaza un festival, iar producatorii spectacolelor au informat managerul festivalului privind intervalul de timp [start, final) in care fiecare spectacol se poate desfasura. Presupunem ca managerul festivalului dispune de urmatoarele informatii:

n - numarul de spectacole propuse start[i] - ora de la care poate incepe spectacolul i, i = 1, 2, ..., n final[i] - ora pana la care trebuie sa se incheie spectacolul i, i = 1, 2, ..., n. Nu exista pauza intre spectacole. Managerul doreste o incarcare maximala a salii Studio. Presupunem ca ati scris un program C+ +/Java care sa fie util managerului in alegerea numarului maxim de spectacole, iar sala sa fie utilizata cat mai mult timp. In testarea programului folositi urmatorul set de date n=8 i = 1, start[1] = 2, final[1] = 5 i = 2, start[2] = 10, final[2] = 15 i = 3, start[3] = 7, final[3] = 9 i = 4, start[4] = 18, final[4] = 19 i = 5, start[5] = 10, final[5] = 12 i = 6, start[6] = 12, final[6] = 16 i = 7, start[7] = 7, final[7] = 8 i = 8, start[8] = 20, final[8] = 23 Care din urmatoarele variante de raspuns este oferit de programul dumneavoastra in ipoteza ca acesta implementeaza corect metoda de selectie pentru utilizarea la maximum a salii pentru cat mai multe spectacole. 1, 3, 2, 4, 8 1, 3, 7, 2, 5, 6, 8, 4 1, 7, 3, 5, 2, 6, 4, 8 1, 3, 5, 6, 4, 8 Fie n, m N*, n m si A = si B = multimi de numere intregi nenule. astfel incat

Se cere determinarea unei submultimi ordonate de indici

valoarea expresiei sa fie maxima pentru . Presupunem ca ati scris un program C++/Java care implementeaza corect strategia de rezolvare a problemei si ca setul de date utilizat la testarea programului este: n = 4, m = 6, A = {-5, -4, -3, 10} si B = {-2, 1, 2, 3, 4, 5} Care este multimea de indici obtinuta de programul testat? {1, 4, 5, 6}

{1, 2, 5, 6} {1, 2, 3, 6} {1, 3, 4, 6} Se presupune ca un numar de n melodii care au lungimile (in unitati de timp) trebuie plasate intr-o lista care poate fi parcursa doar secvential (nu se poate asculta melodia i daca nu au fost parcurse melodiile 1, 2, ..., i-1, i > 1). Se presupune ca probabilitatea de a asculta oricare din melodii este 1/n. Faceti parte din echipa care testeaza buna functionare a unui program pentru stabilirea ordinii in care trebuie incluse melodiile in lista astfel incat timpul mediu pentru a ajunge la melodii sa fie minim. Programul citeste n - numarul melodiilor, L[i] - lungimea melodiei i ( i = 1, 2, ..., n) si afiseaza indicii melodiilor in ordinea in care se vor plasa in lista. Presupunem ca setul de date folosit la testare este: n = 10 i = 1, L[1] = 10 i = 2, L[2] = 8 i = 3, L[3] = 9 i = 4, L[4] = 7 i = 5, L[5] = 1 i = 6, L[6] = 4 i = 7, L[7] = 3 i = 8, L[8] = 5 i = 9, L[9] = 2 i = 10, L[10] =6 Programul trebuie sa afiseze: 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 1, 3, 5, 7, 9, 2, 4, 6, 8, 10 2, 4, 6, 8, 10, 1, 3, 5, 7, 9 5, 9, 7, 6, 8, 10, 4, 2, 3, 1 Un sistem de operare unitasking trebuie sa execute n programe. Timpul necesar executarii fiecarui program este cunoscut si notat cu T[i], i = 1, 2, ..., n. Trebuie sa scrieti un planificator de programe care citeste numarul programelor si durata acestora pentru ca apoi sa le incarce, in memorie, pentru executare. Se presupune ca este posibil accesul direct la fisierul asociat fiecarui program si se doreste ca timpul mediu petrecut de orice program, in memorie, sa fie minim. Presupunem ca ati implementat strategia optima de planificare, planificatorul afiseaza corect durata de executare a fiecaruia din programele selectate si ca setul de date pentru testarea planificatorului este: n=8 i = 1, T[1] = 10 i = 2, T[2] = 6

i = 3, T[3] = i = 4, T[4] = i = 5, T[5] = i = 6, T[6] = i = 7, T[7] = i = 8, T[8] =

8 6 5 4 9 8

Lista duratelor de executare a programelor, afisata de catre planificatorul optimal, este: 10, 6, 8, 6, 5, 4, 9, 8 4, 5, 6, 6, 8, 8, 9, 10 10, 9, 8, 8, 6, 6, 5, 4 8, 9, 4, 5, 6, 8, 6, 10 In intervalul de timp [0, T] o echipa poate executa n lucrari, unde timpul de executare a fiecarei lucrari este acelasi. La un moment dat echipa intreaga lucreaza la o singura lucrare. Se presupune ca seful echipei cunoaste atat castigul obtinut C[i], cat si termenul de finalizare F[i], pentru fiecare lucrare i, i = 1, 2, ..., n. Se cere o selectie optimala a lucrarilor in sensul maximizarii castigului obtinut. Se presupune ca pentru obtinerea selectiei optimale se va utiliza un program C++/Java care trebuie testat pentru urmatorul set de date: n = 10 i = 1, F[1] = 1, C[1] = 10 i = 2, F[2] = 3, C[2] = 9 i = 3, F[3] = 3, C[3] = 10 i = 4, F[4] = 6, C[4] = 8 i = 5, F[5] = 7, C[5] = 8 i = 6, F[6] = 7, C[6] = 9 i = 7, F[7] = 8, C[7] = 5 i = 8, F[8] = 8, C[8] = 7 i = 9, F[9] = 8, C[9] = 10 i = 10, F[10] = 8, C[10] = 12 Indicati multimea de indici care descrie selectia obtinuta folosind strategia optimala (aplicabila pentru orice set de date) stiind ca echipa isi incheie activitatea la momentul T = 8. 10, 3, 9, 6, 4, 5, 6, 7 3, 4, 10, 9, 8, 7, 6, 5 1, 3, 2, 4, 6, 5, 10, 9 1, 2, 3, 4, 5, 6, 7, 8 Se considera graful din figura

Multimea muchiilor arborelui partial de cost minim obtinute prin metoda Greedy, este: [u0, u1], [u3, u4], [u1, u3], [u2, u3], [u4, u5] [u0, u1], [u3, u4], [u1, u2], [u2, u3], [u4, u5] [u0, u1], [u1, u2], [u2, u3], [u3, u4], [u4, u5] [u0, u1], [u3, u4], [u1, u3], [u2, u4], [u4, u5] Se considera un graf neorientat cu 80 de noduri si 3160 muchii. Care este numarul de muchii care nu vor fi selectate de un program care implementeaza metoda Greedy pentru constructia arborelui partial de cost minim? 79 3081 80 3080 Se presupune ca un program a preluat la intrare un graf cu n varfuri si m muchii pentru a obtine un arbore partial de cost minim. Din raportul de testare intocmit asupra programului dispunem doar de informatia privind numarul de muchii selectate de program. Acesta este 11. Care trebuie sa fi fost n - numarul de varfuri ale grafului considerat? n = 11 n = 12 n= (combinari de 11 luate cate 2) n = 11! (11 factorial) Un graf neorientat este complet daca oricare doua noduri distincte ale sale sunt adiacente. Presupunem ca utilizati un program C++/Java care determina muchiile unui arbore partial al grafului complet cu n varfuri. Care este numarul de muchii care nu sunt considerate de metoda Greedy pentru a construi un arbore partial al grafului, daca n = 7? 21 7 6 15 Pentru a determina starile accesibile ale unui automat finit determinist se utilizeaza metoda Greedy Backtracking

Programarii Dinamice Divide et Impera Branch and Bound

Se considera un graf neorientat G. Pentru a determina varfurile grafului G care fac parte din componenta conexa a varfului x (x reprezinta un parametru formal al functiei/metodei care implementeaza algoritmul de rezolvare a problemei) se utilizeaza metoda Backtracking Programarii Dinamice Divide et Impera Branch and Bound Greedy

Pentru a genera toate grafurile orientate, disticte, cu n varfuri, se utilizeaza metoda Backtracking. Aveti de testat un program care trebuie sa implementeze corect metoda de rezolvare. Cate solutii trebuie sa genereze programul pentru n = 4? 4 24 16 4096

Fie A = {1, 2, ..., n} si B = {1, 2, ..., m}, unde n si m sunt numere naturale nenule, doreste generarea tuturor functiilor injective trebuie folosita? Metoda Branch and Bound Metoda Divide et Impera Metoda Backtracking Metoda Programarii Dinamice Metoda Greedy

. Se

. Ce metoda de elaborarea algoritmilor

Utilizand metoda backtracking se genereaza in ordine lexicografica cuvintele de cate patru litere din multimea A = {a, b, c, d, e}, cuvinte care nu contin doua vocale alaturate. Primele opt cuvinte generate sunt, in ordine: abab abac

abad abba abbb abbc abbd abbe. Cate cuvinte generate incep cu litera b si se termina cu litera e? 9 15 12 20

Utilizand metoda backtracking se genereaza in ordine lexicografica cuvintele de cate patru litere din multimea A = {a, b, c, d, e}, cuvinte care nu contin doua vocale alaturate. Primele opt cuvinte generate sunt, in ordine: abab abac abad abba abbb abbc abbd abbe. Care este ultimul cuvant generat? edcb eeee edde eded

Utilizand metoda backtracking se genereaza in ordine lexicografica cuvintele de cate patru litere din multimea A = {a, b, c, d, e}, cuvinte care nu contin doua vocale alaturate. Primele opt cuvinte generate sunt, in ordine: abab abac abad abba abbb abbc abbd abbe. Care este penultimul cuvant generat?

edec eded edde edcb

Folosind modelul combinarilor se genereaza numerele naturale cu cate trei cifre distincte din multimea {1, 2, 3, 7}, numere cu cifrele in ordine strict crescatoare, obtinandu-se, in ordine: 123, 127, 137, 237. Daca se utilizeaza exact aceeasi tehnica pentru a genera numerele naturale cu patru cifre distincte din multimea {1, 2, 3, 4, 5, 6, 7, 8}, cate numere generate au prima cifra 2 si ultima cifra 7? 8 3 4 6

Utilizand metoda backtracking sunt generate numerele de 3 cifre avand toate cifrele distincte si cu proprietatea ca cifrele aflate pe pozitii consecutive sunt de paritate diferita. Stiind ca primele sase solutii generate sunt, in aceasta ordine, 103, 105, 107, 109, 123, 125, care este a zecea solutie generata? 145 147 230 149

Utilizand metoda backtracking ati scris un program corect in C++/Java care genereaza toate numerele de cate n cifre (0<n<10), cifrele fiind in ordine strict crescatoare. Daca n este egal cu 7, cate numere genereaza programul dumneavoastra? 9! 36 7! 7

Un program C++/Java implementeaza corect tehnica backtracking pentru a genera, in ordine lexicografica, toate sirurile de 5 cifre 0 si 1 cu proprietatea ca nu exista mai mult de doua cifre 0 pe pozitii consecutive. Primele 7 solutii generate sunt: 00100

00101 00110 00111 01001 01010 01011. Care este a 8-a solutie generata de acest program? 01110 01100 01011 01101

Folosind strategia backtracking ati elaborat un program C++/Java care genereaza corect, in ordine crescatoare, toate numerele de n cifre folosind doar cifrele 3, 5 si 7. Daca pentru n = 5, primele 5 solutii generate trebuie sa fie 33333, 33335, 33337, 33353, 33355, precizati care ar trebui sa fie ultimele 3 solutii. 77737, 77757, 77777 77337, 77353, 77355 77773, 77775, 77777 77753, 77773, 77777

In timpul procesului de generare a permutarilor multimii {1, 2, ..., n} prin metoda backtracking, in tabloul unidimensional x este plasat un element x[k] ( ). Acesta este considerat valid daca este indeplinita conditia: x[k] {x[0], x[1], ..., x[k-1]} x[k] {x[0], x[1], ..., x[n-1]} x[k] x[k-1] x[k] x[k-1] si x[k] x[k+1]

Algoritmul de generare a tuturor numerelor de 5 cifre nenule, fiecare avand cifrele ordonate strict crescator, este echivalent cu algoritmul de generare a: submultimilor unei multimi cu 5 elemente produsul cartezian a unor multimi de cifre aranjamentelor de 9 elemente luate cate 5 combinarilor de 9 elemente luate cate 5 Se considera functia recursiva definita incomplet.

void s(int x){ cout << '*'; if (...) { cout << '*'; s(x-1); } } Cu ce expresie pot fi inlocuite punctele de suspensie astfel incat, in urma apelului s(2), sa afiseze 3 caractere *? x>1 x>2 x>=3 x>0 Functia f este astfel definita incat f(1) = 8 si f(n+1)=2*f(n)-4, pentru n numar natural nenul. Care este cea mai mare valoare pe care o poate lua x astfel incat f(x) < 1000? 7 6 8 9 Care din urmatoarele metode de sortare nu este obtinuta prin metoda Divide et impera? Sortare prin interclasare Sortare rapida Sortare prin numarare Care este complexitatea algoritmului de cautare binara (aplicat asupra unei colectii ordonate cu n elemente), din punct de vedere al numarului de comparatii? n O( n/2 )

Se considera arborele binar

Se aplica metoda Divide et impera pentru traversarea in preordine a arborelui. Care este secventa care corespunde traversarii in preordine a subarborelui drept? +/+EF-GH /+EF-GH +*-AB+CD *-AB+CD Se considera arborele binar

Folosind strategia Divide et Impera se cauta numarul 13 in acest arbore. Care sunt numerele cu care se va compara? 10, 11, 12, 14 10, 15, 11, 14, 12

15, 14 1, 3, 8, 10, 11, 12, 14 Se considera arborele binar

Care este ultimul numar din lista care reda parcurgerea in postordine a arborelui? -8 17 12 Se considera imaginea partitionata recursiv in patru regiuni prin metoda Divide et impera.

Arborele asociat partitionarii este numit arbore Quad. Nodul radacina este constituit din intreaga imagine. Care este inaltimea arborelui Quad care corespunde partitionarii date mai sus? 3 4 5 6 Presupunem ca a si b sunt numere intregi pozitive a cate n biti, unde , reprezinta

partile a cate n/2 biti:

Rezulta, de aici, ca inmultirea binara poate fi realizata prin strategia Divide et impera. Complexitatea T(n) a algoritmului de inmultire binara este descrisa prin T(n) = O( ) T(n) = O( ) T(n) = O(n/2) Orice algoritm recursiv este o descriere a unui rationament de tip Divide et impera. Adevarat Fals Se considera trei tije notate cu numerele 1, 2 si 3. Se considera n discuri de diametre diferite. Initial, toate discurile sunt plasate pe tija 1 in ordinea descrescatoare a diametrelor, considerand sensul de la baza la varf. Se doreste testarea unui program care utilizeaza strategia Divide et impera pentru a muta discurile de pe tija 1 pe tija 2, folosind ca tija de manevra tija 3 si respectand urmatoarele reguli: - la fiecare pas se muta un singur disc; - un disc poate fi asezat numai peste alt disc cu diametru mai mare sau poate fi primul disc de la baza tijei. Notam prin T(n) numarul mutarilor necesare. Atunci: T(n) = T(n) = T(n)= T(n)= Se considera un triunghi de numere naturale format din n linii. Prima linie contine un numar, a doua linie doua numere, . . . , ultima linie n numere naturale. Cu ajutorul acestui triunghi se pot forma sume de numere naturale n felul urmator: 1) se porneste cu numarul din linia 1; 2) succesorul unui numar se afla pe linia urmatoare plasat sub el (aceeasi coloana) sau pe diagonala la dreapta (coloana creste cu 1). Presupunem ca ati implementat strategia programarii dinamice pentru a obtine cea mai mare suma care se poate forma folosind regulile de mai sus. Testati programul realizat pentru n = 4 si triunghiul de numere: 2 35 634 5614

Care este suma maxima obtinuta? 14 16 17 19 Se considera x - un vector cu n elemente numere ntregi. Se scrie un program C++/Java bazat pe strategia Programarii Dinamice care va determina un cel mai lung sir crescator al sirului x. In timpul testarii programului se considera: n=5 x = (4, 5, 7, -1, 7) Programul trebuie sa afiseze: 4, 5, 7 4, 5, 7, 7 5, 7, 7 Fie G un graf orientat si ponderat avand n varfuri. Fie d[i] lungimea drumului maxim care are ca extremitate initiala varful i (i = 1, 2, ..., n). Valoarea d(G) = max{d[i]; i = 1, 2, ..., n} reprezinta diametrul grafului G. Se doreste utilizarea programarii dinamice pentru elaborarea si testarea unui program C++/Java care pentru un graf orientat G furnizeaza d(G). Care este algoritmul care, modificat, faciliteaza obtinerea diametrului grafului G? Dijkstra Roy-Floyd Kruskal Fie matricele A[50][20], B[20][1], C[1][10] si D[10][100]. Se doreste realizarea inmultirii celor patru matrici X = ABCD. Inmultirea matricelor este asociativa, iar numarul de inmultiri pentru realizarea produsului Y=UV (unde U[m][n] si V[n][p]) este mxnxp. Care este ordinea de inmultire (obtinuta prin metoda programarii dinamice) ce duce la numarul minim de inmultiri cu care se poate calcula X. A x ((BxC)xD) (Ax(BxC))xD (AxB)x(CxD) Se defineste o partitie a unui numar natural n ca fiind o scriere a lui n sub forma , unde , iar sunt numere naturale care verifica relatia

. Ati scris un program C++/Java, care utilizeaza metoda programarii dinamice, pentru a numara si genera partitiile oricarui numar n introdus de la tastatura. Pentru n = 7 se cere sa precizati cate din partitiile generate de programul dumneavoastra sunt constituite numai din numere impare: este impar pentru oricare i, .

7 6 5 8 Intr-o regiune montana se doreste instalarea unui lant de telecabine. Se considera ca in regiunea montana considerata sunt N varfuri si ca statiile pentru telecabine pot fi montate in oricare din cele N varfuri. Presupunem ca varfurile sunt date de la stanga la dreapta (exemplu: de la Vest la Est) si ca sunt numerotate prin 1, 2, 3,..., N. Astfel, fiecare varf i este precizat prin coordonata X[i] (pe axa OX) si inaltimea H[i] (pe axa OY). Se doreste infiintarea a exact K statii de telecabine. Deoarece se doreste ca lantul de telecabine sa asigure conectarea varfurilor 1 si N, cu exceptia statiei 1 (amplasata obligatoriu in varful 1) care este conectata doar cu statia 2 si a statiei K (amplasata obligatoriu in varful N) care este conectata doar cu statia K-1, toate celelalte statii i (1 < i < K) sunt conectate atat cu statia i-1 cat si cu statia i+1, iar lungimea totala a cablurilor folosite la conectare sa fie minima. Lungimea cablului dintre doua statii este egal cu distanta dintre ele. In plus, un cablu care uneste doua statii consecutive nu poate avea o lungime mai mare decat o lungime fixata L. De asemenea, formele de relief influenteaza conectare. Mai precis: varfurile i si j (i < j) nu pot fi conectate direct daca exista un varf v (i<v<j) astfel incat segmentul de dreapta care uneste varfurile i si j trece pe sub varful v. Daca i, v si j sunt coliniare atunci toate trei se considera a fi statii. Pentru a identifica amplasarea celor K statii astfel incat lungimea totala a cablurilor sa fie minima si sa fie indeplinite restrictiile de mai sus ati elaborat un program C++/Java care implementeaza un algoritm obtinut prin tehnica programarii dinamice. Programul afiseaza lungimea minima LM si lista varfurilor in care se instaleaza statiile. Pentru N = 7, X[i] 0 4 6 7 12 13 14 H[i] 16 3 8 4 16 16 16 K=5, L = 11 si amplasarea

se cere sa verificati care dintre urmatoarele raspunsuri ale programului trebuie sa fie cel corect. LM = 16, Statiile: 1, 5, 6, 7 LM = 22, Statiile: 1, 3, 5, 6, 7 O companie este alcatuita din N soldati. Se considera ca soldatii sunt identificati prin numerele 1, 2, ..., N si se cunosc inaltimile H[i], pentru fiecare soldat avand codul i (i = 1, 2, ..., N). La prima inspectie soldatii sunt asezati in sir in ordinea crescatoare a codului. Capitanul doreste ca din sir sa iasa un numar minim de soldati, iar cei care raman, fara sa-si schimbe locurile, sa poata vedea cel putin o extremitate a sirului (din stanga sau din dreapta). Un soldat vede o extremitate daca intre el si extremitate nu se afla un soldat cu inaltimea mai mare sau egala cu

inaltimea lui. Ati scris un program C++/Java care accepta la intrare numarul N si inaltimile H[i], i=1, 2, ...,N si determina, folosind strategia programarii dinamice, numarul minim de soldati x care trebuie sa paraseasca sirul pentru a fi indeplinita conditia din enunt.

La testarea programului, dumneavoastra considerati urmatoarele date: N=8 i = 1, H[1] = 1.86 i = 2, H[2] = 1.86 i = 3, H[3] = 1.31 i = 4, H[4] = 2.00 i = 5, H[5] = 1.40 i = 6, H[6] = 1.00 i = 7, H[7] = 1.97 i = 8, H[8] = 2.20 Ce valoare a lui x trebuie sa afiseze programul? 3 4 2 1 Se considera o matrice dreptunghiulara cu m linii si n coloane ce contine numere naturale in intervalul [1,255]. Se doreste traversarea matricei din coltul stanga-sus in coltul dreapta-jos. O traversare este compusa din deplasari. La o deplasare de executa un salt pe orizontala (se poate ajunge in oricare celula de pe aceeasi linie, dar nu in acelasi loc) si un pas pe verticala (la celula aflata dedesubt). Exceptia face ultima deplasare constituita doar din saltul de pe ultima linie in coltul dreapta-jos. Rezulta ca in cadrul traversarii se viziteaza 2m celule. Se doreste suma minima care se poate obtine prin astfel de traversari. Pentru aceasta ati elaborat un program C++/Java care foloseste tehnica programarii dinamice pentru a determina suma minima. Vi se cere sa considerati, in vederea testarii programului, setul de date: Dimensiunea matricei: m = 4, n = 5 Matricea: 3 4 5 7 9 6 6 3 4 4 6 3 3 9 6 6 5 3 8 2

si sa validati raspunsul corect (care reprezinta suma minima ce poate fi obtinuta printr-o traversare salt-pas). 25 28 24 22

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