Pagini recente » Cod sursa (job #1836694) | Cod sursa (job #911781) | Cod sursa (job #1072278) | Cod sursa (job #2297700) | Cod sursa (job #1000228)
#include <fstream>
#include <climits>
long long paran(long long *A, int nV);
int main()
{
std::ifstream in("podm.in");
std::ofstream out("podm.out");
int nV;
in >> nV;
long long *nA = new long long[nV + 2];
for(int i = 0; i <= nV; i++)
in >> nA[i];
out << paran(nA, nV);
return 0;
}
long long paran(long long *A, int nV)
{
long long **B = new long long*[nV + 1];
for(int i = 0; i <= nV; i++)
B[i] = new long long[nV + 1];
for(int i = 1; i <= nV; i++)
B[i][i] = 0;
for(int l = 2; l <= nV; l++)
{
for(int i = 1; i <= nV - l + 1; i++)
{
int j = i + l - 1;
B[i][j] = INT_MAX;
for(int k = i; k < j; k++)
{
long long q = B[i][k] + B[k + 1][j] + A[i - 1] * A[k] * A[j];
if(q < B[i][j]) B[i][j] = q;
}
}
}
return B[1][nV];
}