Cod sursa(job #3191750)

Utilizator RatebaSerbanescu Andrei Victor Rateba Data 10 ianuarie 2024 16:35:37
Problema Parantezare optima de matrici Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.73 kb
#include <fstream>
#include <climits>

using namespace std;

ifstream fin("podm.in");
ofstream fout("podm.out");

const int MAX_N = 502;
long long memo[MAX_N][MAX_N];
long long dims[MAX_N];

const long long INF = LONG_MAX;

long long f_dp(int i, int j)
{
    if (memo[i][j] != 0)
    {
        return memo[i][j];
    }

    if (i == j)
    {
        return 0;
    }

    long long minn = INF;
    for (int k = i; k < j; k++)
    {
        long long q = f_dp(i, k) + f_dp(k + 1, j) + dims[i - 1] * dims[k] * dims[j];

        minn = min(minn, q);
    }

    memo[i][j] = minn;
    return minn;
}

int main()
{

    int n;

    fin >> n;
    for (int i = 0; i <= n; i++)
    {
        fin >> dims[i];
    }

    fout << f_dp(1, n);

    return 0;
}