Cod sursa(job #1714357)
| Utilizator | Data | 7 iunie 2016 23:23:18 | |
|---|---|---|---|
| Problema | Parantezare optima de matrici | Scor | 80 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.65 kb |
#include<fstream>
#define oo 1LL<<62
using namespace std;
ifstream fin("podm.in");
ofstream fout("podm.out");
int N;
int X[505];
long long DP[505][505];
int main()
{
fin>>N;
for(int i = 0 ; i <= N ; ++i)
fin>>X[i];
for(int pas = 1 ; pas < N ; ++pas)
for(int i = 1 ; i <= N-pas ; ++i)
{
int j = i + pas;
DP[i][j] = oo;
for(int k = i ; k < j ; ++k)
{
DP[i][j] = min(DP[i][j],DP[i][k] + DP[k+1][j] + X[i-1] * X[k] * X[j]);
}
}
fout<<DP[1][N]<<"\n";
fin.close();
fout.close();
return 0;
}
