Cod sursa(job #1094408)

Utilizator dragosaioaneiAioanei Dragos dragosaioanei Data 29 ianuarie 2014 14:01:54
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <fstream>
using namespace std;
#define NMAX 505
#define Min(a, b) ((a) < (b) ? (a) : (b))
#define INF 100000000000000000LL
#define IN "podm.in"
#define OUT "podm.out"

long long matrice[NMAX][NMAX],d[NMAX];
int n,i,x,j,k;
int main(void)
{
    ifstream fin(IN);
    ofstream fout(OUT);

    fin>>n;
    for(i=0;i<=n;i++)
        fin>>d[i];

    for(i=1;i<=n;i++)
        matrice[i][i] = 0;
    for(i=1;i<=n-1;i++)
        matrice[i][i + 1]=d[i-1]*d[i]*d[i + 1];
    for(x=2;x<=n-1;x++)
        for(i=1;i<=n-x;i++)
        {
            j=i+x;
            matrice[i][j]=INF;
            for(k=i;k<=j-1;k++)
                matrice[i][j]=Min(matrice[i][j],matrice[i][k]+matrice[k + 1][j]+d[i - 1]*d[k]*d[j]);
    }
    fout<<matrice[1][n];

    return 0;
}