Upload
mihnea-savu
View
218
Download
0
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).