Cod sursa(job #681628)
| Utilizator | Data | 17 februarie 2012 16:08:23 | |
|---|---|---|---|
| Problema | Parantezare optima de matrici | Scor | 80 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.53 kb |
#include <fstream>
using namespace std;
#define inf 0x3f3f3f3f
#define dim 505
long long unsigned v[dim], mat[dim][dim];
int main()
{
ifstream fin("podm.in");
ofstream fout("podm.out");
int n, i, k,d,j;
fin>>n;
for(i=0;i<=n;++i)
fin>>v[i];
for(i=1;i<=n;++i)
mat[i][i+1]=v[i-1]*v[i]*v[i+1];
for(d=2;d<=n;++d)
{
i=1;j=d;
for(;j<=n;++j,++i)
{
mat[i][j]=inf;
for(k=i;k<=j-1;++k)
mat[i][j]=min(mat[i][j],mat[i][k]+mat[k+1][j]+v[i-1]*v[k]*v[j]);
}
}
fout<<mat[1][n];
return 0;
}