Pagini recente » Cod sursa (job #1670359) | Cod sursa (job #2789798) | Cod sursa (job #1151964) | Cod sursa (job #2716042) | Cod sursa (job #3275054)
#include <cstring>
#include <stdio.h>
#define MAXN 555
#define MIN(a, b) ((a) < (b) ? (a) : (b))
int n;
int dp[MAXN][MAXN];
int v[MAXN];
int main() {
freopen("podm.in", "r", stdin);
freopen("podm.out", "w", stdout);
scanf("%d", &n);
for (int i = 0; i <= n; i++) {
scanf("%d", &v[i]);
}
memset(dp, 127, sizeof(dp));
for (int i = 1; i <= n; i++) {
dp[i][i] = 0;
if (i < n)
dp[i][i + 1] = v[i - 1] * v[i] * v[i + 1];
}
for (int x = 2; x <= n; x++) {
for (int i = 1; i <= n - x; i++) {
for (int k = i; k < i + x; k++) {
dp[i][i + x] = MIN(dp[i][i + x], dp[i][k] + dp[k + 1][i + x] +
v[i - 1] * v[k] * v[i + x]);
}
}
}
printf("%d\n", dp[1][n]);
return 0;
}