Cod sursa(job #1094479)

Utilizator Crismaru_VladFII Crismaru Vlad Marian Crismaru_Vlad Data 29 ianuarie 2014 14:27:37
Problema Parantezare optima de matrici Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <fstream>

#define NMAX 105
#define INFINIT 100000000000ll

using namespace std;

int n;
long long int nr_min[NMAX][NMAX];
int d[NMAX];

void citire()
{
    int i;
    freopen("podm.in", "r", stdin);
    scanf("%d", &n);
    for(i=0;i<=n;++i)
        scanf("%d", &d[i]);
}

void det();
void afisare();

int main()
{
    citire();
    det();
    afisare();
    return 0;
}

void det()
{
    int i, j, x, k;
    for(i=1;i<n;++i)
        nr_min[i][i+1]=d[i-1]*d[i]*d[i+1];
    for(x=3;x<=n;++x)
    {
        for(i=1;i<=n-x+1;++i)
        {
            j=i+x-1;
            nr_min[i][j]=INFINIT;
            for(k=i;k<j;++k)
                nr_min[i][j]=min(nr_min[i][j], nr_min[i][k]+nr_min[k+1][j]+d[i-1]*d[k]*d[j]);
        }
    }
}

void afisare()
{
    ofstream fout("podm.out");
    fout<<nr_min[1][n];
}