Mai intai trebuie sa te autentifici.
Cod sursa(job #525760)
Utilizator | Data | 26 ianuarie 2011 03:19:15 | |
---|---|---|---|
Problema | Parantezare optima de matrici | Scor | 70 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.59 kb |
#include <cstdio>
#include <climits>
using namespace std;
#define NMAX 500
int main(void)
{
int n, i, j, k, l, q;
int d[NMAX+1];
int M[NMAX+1][NMAX+1];
freopen("podm.in","r",stdin);
scanf("%d",&n);
for (i=0;i<=n;++i)
{
scanf("%d",&d[i]);
M[i][i] = 0;
}
for (l=2;l<=n;++l)
{
for (i=1;i<=n-l+1;++i)
{
j = i+l-1;
M[i][j] = INT_MAX;
for (k=i;k<j;++k)
{
q = M[i][k]+M[k+1][j]+d[i-1]*d[k]*d[j];
if (q < M[i][j])
{
M[i][j] = q;
}
}
}
}
freopen("podm.out","w",stdout);
printf("%d\n",M[1][n]);
return 0;
}