Cod sursa(job #1096536)
| Utilizator | Data | 2 februarie 2014 12:00:24 | |
|---|---|---|---|
| Problema | Parantezare optima de matrici | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.62 kb |
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("podm.in");
ofstream fout("podm.out");
#define MAX 510
long long a[MAX][MAX], d[MAX];
int main()
{
long long n, i, w, j, k;
fin>>n;
for(i=0;i<=n;i++)
{
fin>>d[i];
}
for(i=1;i<n;i++)
{
a[i][i+1]=d[i-1]*d[i]*d[i+1];
}
for(w=2;w<=n;w++)
{
for(i=1;i+w<=n;i++)
{
j=i+w;
a[i][j]=1LL*1<<60;
for(k=i;k<j;k++)
a[i][j]=min(a[i][j], a[i][k] + a[k+1][j] + d[i-1]*d[k]*d[j]);
}
}
fout<<a[1][n]<<"\n";
}
