Cod sursa(job #1767366)

Utilizator caprariuapCaprariu Alin-Paul caprariuap Data 28 septembrie 2016 22:33:20
Problema Parantezare optima de matrici Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <cstdio>

using namespace std;

long long i,j,k,n,m[510],dp[510][510],nr,dif;

int main()
{
    freopen("podm.in","r",stdin);
    freopen("podm.out","w",stdout);
    scanf("%d",&n);
    for (i=0; i<=n; i++)
        scanf("%d",&m[i+1]);
    for (i=1; i<n; i++)
        dp[i][i+1]=m[i]*m[i+1]*m[i+2];
    nr=2;
    dif=2;
    while (nr<n)
    {
        for (i=1; i+nr<=n; i++)
        {
            j=i+nr;
            for (k=i; k<=j; k++)
                if (dp[i][j]==0||(dp[i][k]+dp[k+1][j]+m[i]*m[j+1]*m[k+1]<dp[i][j]))
                    dp[i][j]=dp[i][k]+dp[k+1][j]+m[i]*m[j+1]*m[k+1];
        }
        nr++;
    }
    printf("%d",dp[1][n]);
}