Cod sursa(job #1061697)

Utilizator RarRaresNedelcu Rares RarRares Data 20 decembrie 2013 10:10:18
Problema Parantezare optima de matrici Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include <iostream>
#include <cstdio>

using namespace std;

int D[501];
int m[501][501], n;

void citire()
{
    cin >> n;
    for(int i = 0; i <= n; i++)
        cin >> D[i];
}


void calcul()
{
    int i = 1, l = 1;
    for(l = 1; l < n; l++)
    {
        for(i = 1; i + l <= n; i++)
        {
            int minim = m[i][i] + m[i+1][i+l] + D[i-1]*D[i]*D[i+l];
            for(int k = i+1; k < i+l; k++)
                minim = min(minim, m[i][k] + m[k+1][i+l] + D[i-1] * D[k] * D[i+l]);
            m[i][i+l] = minim;
        }
    }
}


int main()
{
    freopen("podm.in", "r", stdin);
    freopen("podm.out", "w", stdout);
    citire();

    for(int i = 1; i <= n; i++)
        for(int j = 1; j <= n; j++)
            m[i][j] = n*(i-1) + j;

//    for(int i = 1; i <= n; i++)
//    {
//        for(int j = 1; j <= n; j++)
//            cout << m[i][j] << ' ';
//        cout << '\n';
//    }


    calcul();
    cout << m[1][n];
    return 0;

}