Cod sursa(job #505607)
Utilizator | Pirvu Cristina chrisu | Data | 3 decembrie 2010 08:33:21 |
---|---|---|---|
Problema | Parantezare optima de matrici | Scor | 20 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.47 kb |
#include<stdio.h>
const int INF =10050;
int n, v[505],a[505][505],i,j,k;
int min (int a, int b)
{
if (a<b) return a;
return b;
}
int main()
{
freopen("podm.in","r",stdin);
freopen("podm.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n+1;i++)
scanf("%d",&v[i]);
for(i=n;i>=1;--i)
for(j=i+1;j<=n;++j)
{
a[i][j]=INF;
for(k=i;k<j;k++)
a[i][j]=min(a[i][j],a[i][k]+a[k+1][j]+v[i]*v[k+1]*v[j+1]);
}
printf("%d",a[1][n]);
return 0;
}