Cod sursa(job #1723166)

Utilizator Mihai7Gheoace Mihai Mihai7 Data 29 iunie 2016 21:25:26
Problema Parantezare optima de matrici Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include <cstdio>
#include <climits>

using namespace std;
#define N 503
short d[N],n;
long long  M[N][N];

void progDin()
{
    int nr,i,j,k,kmin;
    long long mint;
    for(nr=2;nr<=n;++nr)//cate matrice se inmultesc
    {
        for(i=1;i<=n-nr+1;++i)//indicele Ai
        {
            j=i+nr-1;//se inmultesc nr matrice, de la Ai la Aj
            for(k=i,mint=LLONG_MAX;k<j;++k)
                if(mint>M[i][k]+M[k+1][j]+d[i-1]*d[k]*d[j])//determin minuimul si pozitia sa
                {
                    mint=M[i][k]+M[k+1][j]+d[i-1]*d[k]*d[j];
                    kmin=k;
                }
            M[i][j]=mint;M[j][i]=kmin;
        }

    }
    FILE *g=freopen("podm.out","w",stdout);
    printf("%lld",M[1][n]);
}

 void getPath()
 {
    //alta data


 }

int main()
{
    short i;
    FILE *f=freopen("podm.in","r",stdin);
    scanf("%hd",&n);
    for(i=0;i<=n;++i)
        scanf("%hd",d+i);
    progDin();
    //getPath();
}