Cod sursa(job #690081)

Utilizator DumitracheIulianDumitrache Iulian DumitracheIulian Data 25 februarie 2012 10:26:15
Problema Parantezare optima de matrici Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include <iostream>
#include <fstream>
using namespace std;

ifstream in ("podm.in");
ofstream out("podm.out");
int const N=505;
int const INF=1<<30;
int d[N],opr[N][N];
int n;

void citesc ()
{
    in>>n;
    for(int i=1;i<=n+1;i++)
        in>>d[i];
    in.close();
}
int minim (int a, int b)
{
    if(a<b)
        return a;
    return b;
}
void construiesc ()
{
    for(int i=n-1;i>0;i--)
        for(int j=i+1;j<=n;j++)
        {
            opr[i][j]=INF;
            for(int k=i;k<j;k++)
                opr[i][j]=minim(opr[i][j],opr[i][k]+opr[k+1][j]+d[i]*d[k+1]*d[j+1]);
        }
}
/*void afis()
{
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
            cout<<opr[i][j]<<"\t";
        cout<<"\n";
    }
}*/
int main()
{
    citesc ();
    construiesc ();
    //afis();
    out<<opr[1][n]<<"\n";
    return 0;
}