Pagini recente » Cod sursa (job #2735806) | Cod sursa (job #886635) | Cod sursa (job #2332505) | Cod sursa (job #1080155) | Cod sursa (job #648489)
Cod sursa(job #648489)
#include <iostream>
#include <fstream>
using namespace std;
fstream fin("podm.in", ios::in);
fstream fout("podm.out", ios::out);
#define MAXN 550
#define INF 0x3f3f3f3f
int n;
int d[MAXN][MAXN], a[MAXN];
int dyn(int i, int j)
{
if (d[i][j] != INF) {
return d[i][j];
}
if (i == j) {
return (d[i][j] = 0);
}
if (i + 1 == j) {
return (d[i][j] = a[i - 1] * a[i] * a[i + 1]);
}
for (int k = i; k < j; ++k) {
d[i][j] = min(d[i][j], dyn(i, k) + dyn(k + 1, j) + a[i - 1] * a[k] * a[j]);
}
return d[i][j];
}
int main()
{
fin >> n;
for (int i = 0; i <= n; ++i) {
fin >> a[i];
for (int j = 1; j <= n; ++j) {
d[i][j] = INF;
}
}
fout << dyn(1, n) << endl;
fin.close();
fout.close();
return 0;
}