Pagini recente » Cod sursa (job #984397) | Cod sursa (job #1748738) | Cod sursa (job #1456077) | Cod sursa (job #1361952) | Cod sursa (job #2956494)
#include <fstream>
using namespace std;
ifstream in("podm.in");
ofstream out("podm.out");
const int NMAX = 500;
int n, v[NMAX + 2];
long long d[NMAX + 1][NMAX + 1];
bool viz[NMAX + 2][NMAX + 2];
int solve(int st, int dr)
{
if (viz[st][dr])
{
return d[st][dr];
}
else
{
if (st == dr)
{
d[st][dr] = 0;
viz[st][dr] = true;
return 0;
}
else
{
for (int k = st + 1; k <= dr; k++)
{
long long c = 0;
c = solve(st, k - 1) + solve(k, dr) + v[st] * v[k] * v[dr + 1];
d[st][dr] = min(d[st][dr], c);
}
return d[st][dr];
}
}
}
int main()
{
in >> n;
for (int i = 1; i <= n + 1; i++)
{
in >> v[i];
}
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= n; j++)
{
d[i][j] = 1e13;
}
}
int rez = solve(1, n);
out << rez;
return 0;
}