Cod sursa(job #1658709)
| Utilizator | Data | 21 martie 2016 19:04:59 | |
|---|---|---|---|
| Problema | Parantezare optima de matrici | Scor | 10 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.53 kb |
#include <fstream>
using namespace std;
#define INF 9000909
ifstream fi("podm.in");
ofstream fo("podm.out");
int m[501][501], d[501];
int min(int a, int b)
{
if (a < b)
return a;
return b;
}
int main()
{
int n, i, j, k;
fi >> n;
for (i = 1; i <= n+1; i++)
fi >> d[i];
for (i = n-1; i >= 1; i--)
{
for (j = i+1; j <= n; j++)
{
m[i][j] = INF;
for (k = 1; k < j; k++)
m[i][j] = min(m[i][j], m[i][k] + m[k + 1][j] + d[i] * d[k + 1] * d[j+1]);
}
}
fo << m[1][n];
return 0;
}