Cod sursa(job #3173371)

Utilizator leelcheeseCiovnicu Denis leelcheese Data 22 noiembrie 2023 18:05:45
Problema Parantezare optima de matrici Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.95 kb
#include <bits/stdc++.h>
using namespace std;

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

#define cin fin
#define cout fout
/**
4
13 5 89 3 34

((A1(13,5) x A2(5,89)) x A3(89,3)) x A4(3,34)

13*5*89 + 13*89*3 + 13*3*34

((A1(13,5) x A2(5,89)) x (A3(89,3) x A4(3,34))

 13*5*89 + 89*3*34 + 13*89*34

dp[i][j] = costul minim al produsului A(i) *A(i+1) * .. *A(j)


*/
int n;
long long dp[505][505];
int d[505];
int main()
{
    int i, j, k;
    cin >> n;
    for (i = 1; i <= n + 1; i++)
        cin >> d[i];
    /// initializari: nu avem

    /// recurente:
    for (i = n - 1; i >= 1; i--)
        for (j = i + 1; j <= n; j++)
        {
            /// calculam pe dp[i][j]:
            dp[i][j] = (1LL << 60);
            for (k = i; k < j; k++)
                dp[i][j] = min(dp[i][j], dp[i][k] + dp[k + 1][j] +
                    1LL * d[i] * d[k + 1] * d[j + 1]);
        }
    cout << dp[1][n];
    return 0;
}