Cod sursa(job #1857148)

Utilizator teodoramusatoiuTeodora Musatoiu teodoramusatoiu Data 25 ianuarie 2017 21:03:13
Problema Parantezare optima de matrici Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream in ("podm.in");
ofstream out ("podm.out");

//recurenta tb sa fie dupa ultima inmult
//d[i][j]==numarul minim de inmultiri pt produsul de la i la j

int n;
long long d[505][505], dim[505];

int main()
{
    in>>n;
    int i,j,k;
    for(i=1; i<=n+1; i++)
        in>>dim[i];
    /*for(i=1; i<=n; i++)
        d[i][i]=0;
    for(i=1; i<n; i++)
        d[i][i+1]=dim[i-1]*dim[i]*dim[i+1];*/
    for(i=n; i>=1; i--)
        for(j=i+1; j<=n; j++)
        {
            d[i][j]=d[i][i+1]+d[i+1][j]+dim[i]*dim[i+1]*dim[j];
            for(k=i; k<=j; k++)
                d[i][j]=min(d[i][j],d[i][k]+d[k+1][j]+dim[i]*dim[k+1]*dim[j+1]);
        }
    /*
    for(i = 1; i <= n; i++)
    {
        for (j = 1; j <= n; j++)
        {
            out << d[i][j] << "\t";
        }
        out << "\n";
    }
    */
    out<<d[1][n];
    return 0;
}