Cod sursa(job #1533325)

Utilizator vnedelcuVictor Andrei Nedelcu vnedelcu Data 22 noiembrie 2015 13:40:04
Problema Parantezare optima de matrici Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <stdio.h>

int v[501];
long long m[501][501];///m[i][j]=nr optim de a inmultiri pt matricele de la i la j

int main()
{
    FILE *f;
    int n,i,j,k;

    f=fopen("podm.in","r");
    fscanf(f,"%d",&n);
    for (i=1; i<=n+1; i++)
        fscanf(f,"%d",&v[i]);
    fclose(f);

    ///costul de a inmulti o singura matrice este 0

    for (i=1; i<n; i++)
        m[i][i+1]=v[i]*v[i+1]*v[i+2];///initializez costurile pt cuplajele de cate 2

    for (j=2; j<=n; j++)
    {
        for (i=1; i<=n-j+1; i++)
        {
            m[i][i+j]=1000000000000000LL;
            for (k=i; k<=i+j; k++)
                if (m[i][k]+m[k+1][j+i]+v[i]*v[k+1]*v[j+i+1] < m[i][i+j])
                    m[i][i+j]=m[i][k]+m[k+1][j+i]+v[i]*v[k+1]*v[i+j+1];
        }
    }

    f=fopen("podm.out","w");
    fprintf(f,"%I64d",m[1][n]);
    fclose(f);
}