Cod sursa(job #1028106)
| Utilizator | Data | 13 noiembrie 2013 17:28:34 | |
|---|---|---|---|
| Problema | Parantezare optima de matrici | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.61 kb |
#include <iostream>
#include <stdio.h>
using namespace std;
FILE *f=fopen("podm.in","r");
FILE *g=fopen("podm.out","w");
long long n,i,j,k,mn,dim[501],c[501][501],l;
int main()
{
fscanf(f,"%lld",&n);
for(i=1;i<=n+1;i++)
fscanf(f,"%lld",&dim[i-1]);
for(l=1;l<=n-1;l++)
for(i=1;i<=n-1;i++)
if(i+l<=n)
{
j=i+l;
mn=-1;
for(k=i;k<j;k++)
if(c[i][k]+c[k+1][j]+dim[i-1]*dim[k]*dim[j]<mn || mn==-1)
mn=c[i][k]+c[k+1][j]+dim[i-1]*dim[k]*dim[j];
c[i][j]=mn;
}
fprintf(g,"%lld",c[1][n]);
fclose(g);
return 0;
}
