Cod sursa(job #1064899)

Utilizator sddddgjdZloteanu Anastasia sddddgjd Data 22 decembrie 2013 14:52:10
Problema Parantezare optima de matrici Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.78 kb
#include<stdio.h>
long long v[505],min[505][505];
long long minof2(long long a,long long b)
{
    if(a<b)
        return a;
    return b;
}
int main()
{
    FILE *fin,*fout;
    fin=fopen("podm.in","r");
    fout=fopen("podm.out","w");
    int n;
    fscanf(fin,"%d",&n);
    int i;
    for(i=0;i<=n;i++)
        fscanf(fin,"%lld",&v[i]);
    for(i=1;i<=n;i++)
        min[i][i]=0;
    for(i=1;i<n;i++)
        min[i][i+1]=v[i-1]*v[i]*v[i+1];
    int w;
    for(w=2;w<n;w++)
        for(i=1;i<=n-w;i++)
        {
            min[i][i+w]=9999999999999999;
            int j;
            for(j=i;j<=i+w-1;j++)
                min[i][i+w]=minof2(min[i][i+w],min[i][j]+min[j+1][i+w]+v[i-1]*v[j]*v[i+w]);
        }
    fprintf(fout,"%lld",min[1][n]);
    return 0;
}