Cod sursa(job #1620888)

Utilizator iulian_f2kGuraliuc Iulian iulian_f2k Data 29 februarie 2016 13:48:20
Problema Parantezare optima de matrici Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <iostream>
#include <fstream>
using namespace std;

int N;
int nr[501][501];
int p[501];

int main()
{
    freopen("podm.in", "rt", stdin);
    freopen("podm.out", "wt", stdout);
    scanf("%d", &N);
    for(int i=1; i<=N+1; ++i)
        scanf("%d", &p[i]);

    for(int i=1; i<N; ++i)
        nr[i][i+1] = p[i] * p[i+1] * p[i+2];
    int v, vm;
    for(int d=3; d<=N; ++d)
        for(int i=1, j=d; j<=N; ++i, ++j)
        {
            vm = nr[i+1][j] + p[i]*p[i+1]*p[j+1];
            //km = i;
            for(int k=i+1; k<j; ++k){
                v = nr[i][k] + nr[k+1][j] + p[i]*p[k+1]*p[j+1];
                if(v < vm) {
                    vm = v;
                    //km = k;
                }
            }
            nr[i][j] = vm;
            //nr[j][i] = km;
        }
    cout<<nr[1][N]<<'\n';

    return 0;
}