Cod sursa(job #1083089)

Utilizator Anca_PaneaPanea Anca Anca_Panea Data 15 ianuarie 2014 16:34:16
Problema Parantezare optima de matrici Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <fstream>
#define Nmax 505
#define oo 1000000000
using namespace std;
ifstream eu("podm.in");
ofstream tu("podm.out");
int N,D[Nmax],DP[Nmax][Nmax];
void Read()
{
    eu>>N;
    for(int i=0;i<=N;i++)
        eu>>D[i];
}
void Solve()
{
    for(int i=1;i<N;i++)
        DP[i][i+1]=D[i-1]*D[i]*D[i+1];
    for(int dif=2;dif<N;dif++)
    {
        for(int i=1;i<=N-dif;i++)
        {
            int j=i+dif;
            DP[i][j]=oo;
            for(int k=i;k<j;k++)
                DP[i][j]=min(DP[i][j],DP[i][k]+DP[k+1][j]+D[i-1]*D[k]*D[j]);
        }
    }
}
void Print()
{
    tu<<DP[1][N]<<"\n";
}
int main()
{
    Read();
    Solve();
    Print();
    return 0;
}