Cod sursa(job #397345)
Utilizator | Matei Ionita Nemultumitu | Data | 16 februarie 2010 20:16:06 |
---|---|---|---|
Problema | Parantezare optima de matrici | Scor | 70 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.46 kb |
#include <cstdio>
int n,v[505],a[505][505];
int main()
{
freopen ("podm.in","r",stdin);
freopen ("podm.out","w",stdout);
scanf("%d",&n);
for (int i=1;i<=n+1;++i)
scanf("%d",&v[i]);
for (int d=2;d<=n;++d)
for (int i=1;i<=n-d+1;++i)
{
int j=i+d-1;
int min=1800000000;
for (int k=i;k<j;++k)
{
int x=a[i][k]+a[k+1][j]+v[i]*v[k+1]*v[j+1];
if (x<min)
min=x;
}
a[i][j]=min;
}
printf("%d",a[1][n]);
return 0;
}