Cod sursa(job #1240289)
| Utilizator | Data | 10 octombrie 2014 22:54:54 | |
|---|---|---|---|
| Problema | Parantezare optima de matrici | Scor | 80 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.64 kb |
#include <stdio.h>
#define nmax 501
using namespace std;
FILE *f=fopen("podm.in","r"),*g=fopen("podm.out","w");
unsigned long q[nmax][nmax];
int main()
{
int i,lg,k,j;
unsigned long mini,aux,n,v[nmax];
fscanf(f,"%ld",&n);
for(i=1;i<=n+1;i++)
fscanf(f,"%ld",&v[i]);
fclose(f);
for(lg=1;lg<n;lg++)
for(i=1;i<=n-lg;i++)
{j=i+lg;
mini=321232123;
for(k=i;k<j;k++)
{
aux=q[i][k]+q[k+1][j]+v[i]*v[k+1]*v[j+1];
if(mini>aux)
mini=aux;
}
q[i][j]=mini;
}
fprintf(g,"%ld",q[1][n]);
fclose(g);
return 0;
}
