Pagini recente » Cod sursa (job #1536687) | Cod sursa (job #1929733) | Cod sursa (job #2416859) | Cod sursa (job #2543300) | Cod sursa (job #1000224)
#include <fstream>
#include <climits>
int paran(int *A, int nV);
int main()
{
std::ifstream in("podm.in");
std::ofstream out("podm.out");
int nV;
in >> nV;
int *nA = new int[nV + 1];
for(int i = 1; i <= nV; i++)
in >> nA[i];
out << paran(nA, nV);
return 0;
}
int paran(int *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[nV][nV];
}