2
Left – descrierea soluţiei Prof. Marius Nicoli, C. N. “Fraţii Buzeşti” - Craiov Problema se rezolvă prin programare dinamică. Pentru fiecare e sume parţiale, W[i][j] = Suma elementelor de pe linia i de pe coloa participa o astfel de sumă de pe fiecare linie. Pentru a secvenţe consecutive cu lungimi egale, crescătoare sau descrescătoa $[i][j] = Suma ma%imă ce se poate obţine ajung&nd la linia i, 'i fo secvenţă de lungime j, iar pe linia anterioară secvenţă de lungime secvenţă de lungime j pe linia curentă 'i tot de lungime j pe linia cu secvenţă de lungime j pe linia curentă i de lungime j+ pe linia anterioară. $ve ș $[i][j] = ma%im )[i(][j(], *[i(][j(]- )[i][j] = ma%im $[i([j]], *[i(][j]- *[i][j] = ma%im $[i(][j+], )[i(][j+]-. Soluţia e dată de ma%imul de pe linia ! pentru cele " matrice. nt doar linia anterioară pentru fiecare matrice, /n locul fiecăreia pu pentru ultimele 0 linii. *omple%itate 1 nm-.

Sol

Embed Size (px)

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).