Cod sursa(job #2783790)
| Utilizator | Data | 15 octombrie 2021 08:39:40 | |
|---|---|---|---|
| Problema | Parantezare optima de matrici | Scor | 80 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.68 kb |
#include <fstream>
using namespace std;
ifstream fin("podm.in");
ofstream fout("podm.out");
long long m[501][501];
int main()
{
int n,x[502];
fin>>n;
for(int i=1;i<=n+1;i++)
{
fin>>x[i];
}
for(int i=1;i<n;i++)
{
m[i][i+1]=x[i]*x[i+1]*x[i+2];
}
for(int k=2;k<n;k++)
{
for(int i=1;i+k<=n;i++)
{
m[i][i+k]=m[i+1][i+k]+(x[i]*x[i+1]*x[i+k+1]);
for(int c=i+1;c<i+k;c++)
{
m[i][i+k]=min(m[i][i+k],m[i][c]+m[c+1][i+k]+x[i]*x[c+1]*x[i+k+1]);
}
}
}
fout<<m[1][n];
fin.close();
fout.close();
return 0;
}
