Pagini recente » Cod sursa (job #591925) | Cod sursa (job #3177764) | Cod sursa (job #2494087) | Cod sursa (job #2736739) | Cod sursa (job #2583740)
#include <bits/stdc++.h>
#define MAXN 502
using namespace std;
ifstream f("podm.in");
ofstream g("podm.out");
int N, dim[MAXN];
int dp[MAXN][MAXN];
void read() {
f >> N;
for (int i = 1; i <= N + 1; ++i) {
f >> dim[i];
}
}
int get_min_operations() {
for (int len = 2; len <= N; ++len) {
for (int left = 1; left + len - 1 <= N; ++left) {
int right = left + len - 1;
for (int k = left; k < right; ++k) {
if (dp[left][right] == 0) {
dp[left][right] = dp[left][k] + dp[k + 1][right] + dim[left] * dim[k + 1] * dim[right + 1];
} else {
dp[left][right] = min(dp[left][right], dp[left][k] + dp[k + 1][right] + dim[left] * dim[k + 1] * dim[right + 1]);
}
}
}
}
return dp[1][N];
}
int main() {
read();
g << get_min_operations();
return 0;
}