Cod sursa(job #492955)

Utilizator chrissBota Cristian chriss Data 16 octombrie 2010 15:41:57
Problema Parantezare optima de matrici Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb
#include <stdio.h>
#define INF 1000000000
#define min(a,b) a>b?b:a

int n,D[505][505],d[505],i,j,k,t;

int main()
{
    freopen("podm.in","r",stdin);
    freopen("podm.out","w",stdout);

    scanf("%d",&n);
    for(i=0; i<=n; ++i)
        scanf("%d",&d[i]);
    for(i=1; i<=n-1; ++i)
        D[i][i+1]=d[i-1]*d[i]*d[i+1];
    for(t=2; t<n; ++t)
        for(i=1; i<=n-t; ++i)
        {
            j=i+t;
            D[i][j]=INF;
            for(k=i; k<j; ++k)
                D[i][j]=min(D[i][j], D[i][k]+D[k+1][j] + d[i-1]*d[k]*d[j]);
        }
    printf("%d",D[1][n]);
    return 0;
}