Cod sursa(job #1311145)

Utilizator FlowstaticBejan Irina Flowstatic Data 7 ianuarie 2015 19:28:34
Problema Parantezare optima de matrici Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include <fstream>
#define Nmax 1000
#define INF 99999999999999999
using namespace std;
ifstream fin("podm.in");
ofstream fout("podm.out");

long long int Nrmin[Nmax][Nmax];
int N;
int D[Nmax];

void Citire();
void Dinamica();
void Afisare();

int main()
{
    Citire();
    Dinamica();
    Afisare();
    return 0;
}

void Citire()
{
    int i;
    fin>>N;
    for (i=0; i<=N; i++)
        fin>>D[i];
}

void Dinamica()
{
    int i,j;
    for (i=1; i<N; i++)
        Nrmin[i][i+1]=D[i] * D[i-1]*D[i+1];

    int k,z;
    long long int minim,t;
    for (z=3;  z<=N;  z++)
        for (i=1; i<=N-z+1; i++)
        {
            j = i+z-1;
            minim=INF;
            for (k=i+1; k<=j; k++)
            {
                t=Nrmin[i][k-1]+Nrmin[k][j]+D[k-1]*D[i-1]*D[j];
                if (minim>t)
                    minim=t;
            }
            Nrmin[i][j]=minim;
        }
}

void Afisare()
{
    fout<<Nrmin[1][N]<<'\n';
}