Cod sursa(job #1723164)

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

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

void progDin()
{
    int nr,i,j,k,mint,kmin;
    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=INT_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("%d",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();
}