Pagini recente » Cod sursa (job #1867762) | Cod sursa (job #2407019) | Cod sursa (job #2384759) | Cod sursa (job #1457485) | Cod sursa (job #3173371)
#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;
}