Sol

Preview:

DESCRIPTION

ok

Citation preview

Left descrierea soluiei

Prof. Marius Nicoli, C. N. Fraii Buzeti - Craiova

Problema se rezolv prin programare dinamic. Pentru fiecare element se calculeaz sume pariale, W[i][j] = Suma elementelor de pe linia i de pe coloane de la 1 la j. La soluie va participa o astfel de sum de pe fiecare linie. Pentru a elimina posibilitatea folosirii a 3 secvene consecutive cu lungimi egale, cresctoare sau descresctoare, vom calcula:A[i][j] = Suma maxim ce se poate obine ajungnd la linia i, i folosind pe aceast linie secven de lungime j, iar pe linia anterioar secven de lungime j-1. Analog, B[i][j] cu secven de lungime j pe linia curent i tot de lungime j pe linia anterioar, iar C[i][j] optimul cu secven de lungime j pe linia curent i de lungime j+1 pe linia anterioar. Avem

A[i][j] = maxim(B[i-1][j-1], C[i-1][j-1])

B[i][j] = maxim(A[i-1[j]], C[i-1][j])

C[i][j] = maxim(A[i-1][j+1], B[i-1][j+1]).

Soluia e dat de maximul de pe linia L pentru cele 3 matrice. ntruct n calcule e necesar doar linia anterioar pentru fiecare matrice, n locul fiecreia putem folosi cte 2 vectori, pentru ultimele 2 linii. Complexitate O(nm).

Recommended