Cod sursa(job #2036891)

Utilizator NicolaalexandraNicola Alexandra Mihaela Nicolaalexandra Data 11 octombrie 2017 10:58:34
Problema Parantezare optima de matrici Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <fstream>
#define INF 1000000000000000LL
#define DIM 505
using namespace std;
int n,i,j,k,l,x[DIM];
long long d[DIM][DIM];
ifstream fin ("podm.in");
ofstream fout ("podm.out");
long long rec (int st,int dr){
    if (d[st][dr] != INF)
        return d[st][dr];
    if (dr == st + 1){
        d[st][dr] = 0;
        return 0;
    }

    for (int i=st+1;i<dr;i++){
        d[st][dr] = min (d[st][dr],rec(st,i)+rec(i,dr)+x[st]*x[i]*x[dr]);

    }

    return d[st][dr];
}

int main (){

    fin>>n;
    n++;
    for (i=1;i<=n;i++)
        fin>>x[i];
    for (i=1;i<n;i++)
        for (j=i+1;j<=n;j++)
            d[i][j] = INF;
    /*for (l=3;l<=n;l++)
    for (i=1;i+l-1<=n;i++){
        j = i+l-1;
        d[i][j] = INF;
        for (k=i+1;k<j;k++)
            d[i][j] = min (d[i][j],d[i][k]+d[k][j] + x[i]*x[j]*x[k]);
    }*/
    fout<<rec(1,n);



    return 0;
}