Dinamikus programozás I

Feladatok:
1. Háromszög feladat (lásd Kása Tanár Úr 8. előadását)
2. Adott n mátrix, melyek legyenek rendre  A1, A2, ..., An és adottak továbbá a méreteik:  d[0] x d[1], d[1] x d[2], ..., d[n-1] x d[n]
Írjunk programot, mely meghatározza a mátrixsor azon zárójelezését, mely szerint minimális számú elemi szorzást végezzünk, ha a mátrixokat össze akarjuk szorozni.

Pszeudokód:
// inicializálás
minden i =1 .. n végezd
    c[i][i] = 0
vége minden

// a tömb feltöltése  
minden i = n-1 .. 1, -1 végezd
    minden j = i+1 .. n végezd
        c[i][j] = MIN
        minden k = i .. j-1 végezd
            ha c[i][k] + c[k+1][j] + d[i-1]*d[k]*d[j] < c[i][j]
                akkor
                    c[i][j] = c[i][k]+c[k+1][j]+d[i-1]*d[k]*d[j]
                    c[j][i] = k
            vége ha
        vége minden
    vége minden
vége minden
kiírás c[1][n]

zárójelezés( i, j )
    ha i = j akkor kiír ‘A’,i
    különben
        kiír ‘(’
        zárójelezés( i, c[j][i] )  // rekurzív hívás

        kiír ‘*’
        zárójelezés( c[j][i]+1, j ) // rekurzív hívás
        kiír ‘)’
    vége ha
vége zárójelezés