Pagini recente » Cod sursa (job #2068338) | Cod sursa (job #2252145) | Cod sursa (job #1865037) | Cod sursa (job #2911949) | Cod sursa (job #1857152)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in ("podm.in");
ofstream out ("podm.out");
const long long INF = 2000000000000000000LL;
//recurenta tb sa fie dupa ultima inmult
//d[i][j]==numarul minim de inmultiri pt produsul de la i la j
int n;
long long d[505][505], dim[505];
int main()
{
in>>n;
int i,j,k;
for(i=1; i<=n+1; i++)
in>>dim[i];
/*for(i=1; i<=n; i++)
d[i][i]=0;
for(i=1; i<n; i++)
d[i][i+1]=dim[i-1]*dim[i]*dim[i+1];*/
for(i=n; i>=1; i--)
for(j=i+1; j<=n; j++)
{
d[i][j]=INF;
for(k=i; k<=j; k++)
d[i][j]=min(d[i][j],d[i][k]+d[k+1][j]+dim[i]*dim[k+1]*dim[j+1]);
}
/*
for(i = 1; i <= n; i++)
{
for (j = 1; j <= n; j++)
{
out << d[i][j] << "\t";
}
out << "\n";
}
*/
out<<d[1][n];
return 0;
}