Cod sursa(job #2953396)

Utilizator SerbanCaroleSerban Carole SerbanCarole Data 11 decembrie 2022 12:33:19
Problema Parantezare optima de matrici Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <fstream>
using namespace std;

ifstream cin("podm.in");
ofstream cout("podm.out");

///////////////////////////////////////

const int MAX = 5e2 + 1;
const int INF = MAX * (1e4+1);

int v[MAX] , n;

long long dp[MAX][MAX];

////////////////////////////////////

long long dinamica( int x , int y ){

    if(dp[x][y] != INF) return dp[x][y];

    if( y - x  < 2 ){

        dp[x][y] = 0;

        return dp[x][y];
    }

    for(int i = x + 1  ; i < y ; i++){

        dp[x][y] = min(dp[x][y] , dinamica(x,i) + dinamica(i,y) + v[x] * v[y] * v[i]);

    }

    return dp[x][y];

}

int main(){

    cin >> n;

    n++;

    for(int i = 1 ; i <= n ; i++){

        cin >> v[i];
    }

    // base case

    for(int i = 1 ; i <= n ; i++){

        for(int j = i ; j <= n ; j++) dp[i][j] = INF;
    }

    cout << dinamica(1,n);

    return 0;
}