Salut,
Ma tot chinui la problema asta si nu ii dau de cap. Insa am cateva idei, cel putin legat de partea de "organizare".
Ok, in principal ma gandeam sa tin o matrice S, unde S[ i ][ j ] - numarul de siruri de dimensiune i cu elemente de la 1 .. j.
Acum legat de partea de recurenta - o pot lua in 2 directii:
1. sa incerc sa calculez S[ i+1 ][ j ] - practic sa "redistribui" numerele de la 1 la j tinand cont ca am o pozitie in plus
- de la o valoare a lui i incolo, pt fiecare j, i >> j (sa zicem), S[ i ][ j ] = 0, intrucat nu exista suficiente numere care sa satisfaca relatia de monotonie
2. sa incerc sa calculez S[ i ][ j+1 ] - practic sa mai adaug o valoare in lista de valori cu care pot construi sirurile
As incerca sa ma gandesc mai departe pe varianta 2, insa nu reusesc sa "controlez" in niciun fel valorile retinute pana in punctul S[ i ][ j ], astfel incat sa pot construi recurenta fara sa adun chestii de 2 ori, sa omit cazuri, etc.
M-ar ajuta orice fel de sugestie legata de ce informatie in plus ar mai trebui sa contina matricea de programare dinamica, ce ar mai fi relevant. De asemenea, orice problema aseamanatoare, sau principiu de programare dinamica, care sa imi dea idei si din care sa pot invata. M-am blocat la problema asta acum ceva timp, acum am reluat-o si sunt in acelasi punct.
Multumesc si o zi faina!