Cod sursa(job #1919887)

Utilizator RaTonAndrei Raton RaTon Data 9 martie 2017 21:27:18
Problema Parantezare optima de matrici Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <fstream>
#include <climits>
using namespace std;
ifstream f("podm.in");
ofstream g("podm.out");
struct MATRICE{
    int l, c;
}V[501];
long long D[501][501];

long long DP(int i, int j){
    if( i == j )
        return 0;
    if( D[i][j] != 0 )
        return D[i][j];
    int k;
    long long aux, min;
    min = INT_MAX;
    for( k = i + 1; k <= j; k++ )
        if( V[k-1].c == V[k].l ){
            aux = DP(i,k-1) + DP(k,j) + V[i].l * V[k-1].c * V[j].c;
            if( aux < min )
                min = aux;
        }
    D[i][j] = min;
    return min;
}

int main()
{
    int n, i, l, c;
    f >> n;
    f >> l;
    for(i = 1; i <= n; i++){
        f >> c;
        V[i].l = l;
        V[i].c = c;
        l = c;
    }
    g << DP(1,n);
    return 0;
}