Cod sursa(job #498650)

Utilizator nickyyLal Daniel Emanuel nickyy Data 5 noiembrie 2010 18:06:41
Problema Parantezare optima de matrici Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <stdio.h>
#define nmax 500
#define inf 100000000000000000LL
using namespace std;

int n,p[nmax];
long long m[nmax][nmax];

int main(void)
{
    FILE *fin,*fout;
    int i,j,k,l;
    long long q;

    fin=fopen("podm.in","r");
    fscanf(fin,"%d",&n);
    for(i=0;i<=n;i++) fscanf(fin,"%d",p+i);
    fclose(fin);

    for(i=1;i<=n;i++) m[i][i]=0;
    for(l=2;l<=n;l++)
        for(i=1;i<=n-l+1;i++)
        {   j=i+l-1;
            m[i][j]=inf;
            for(k=i;k<j;k++)
            {   q=m[i][k]+m[k+1][j]+p[i-1]*p[k]*p[j];
                if(q<m[i][j]) m[i][j]=q;
            }
        }
    fout=fopen("podm.out","w");
    fprintf(fout,"%lld",m[1][n]);
    fclose(fout);

    return 0;
}