Pagini recente » Cod sursa (job #575127) | Cod sursa (job #1800797) | Cod sursa (job #2763365) | Borderou de evaluare (job #471010) | Cod sursa (job #1967445)
#include <iostream>
#include <fstream>
#include <cstring>
#define NMAX 505
using namespace std;
ifstream f ("podm.in");
ofstream g ("podm.out");
int n, D[NMAX], m[NMAX][NMAX];
inline int min(const int & a, const int & b) {
if (a < b) return a;
return b;
}
int main()
{
f>>n;
memset(m, 0x3f, sizeof(m));
for (int i = 0; i <= n; i++) {
f>>D[i];
m[i][i] = 0;
}
for (int i = 1; i <= n; i++)
m[i][i + 1] = D[i - 1] * D[i] * D[i + 1];
for (int d = 2; d <= n; d++)
for (int i = 1; i + d <= n; i++)
for (int k = 0; k < d; k++)
m[i][i + d] = min(m[i][i + d], m[i][i + k] + m[i + k + 1][i + d] + D[i - 1] * D[i + k] * D[i + d]);
g<<m[1][n];
return 0;
}