Pagini recente » Cod sursa (job #1356897) | Cod sursa (job #2795247) | Cod sursa (job #867031) | Cod sursa (job #2595228) | Cod sursa (job #535749)
Cod sursa(job #535749)
//parantezare optima de matrici
// complexitate n^3
// programare dinamica
#include<fstream>
#include<cstdio>
#define INF 100000000000000000LL
using namespace std;
ifstream f ("podm.in");
ofstream g ("podm.out");
long long n,d[505],c[505][505];
int minim(long long a , long long b)
{
if( a < b )
return a;
return b;
}
int main()
{
f >> n;
int i,j,k,o;
for( i = 1 ; i <= n+1 ; i++ )
f >> d[i];
for( i = 1 ; i < n ; i++ )
c[i][i+1] = d[i]*d[i+1]*d[i+2];
for( o = 2 ; o <= n ; o++ )
for(i = 1 ; i <= n - o + 1 ; i++ )
{
j = o + i - 1;
c[i][j] = INF;
for( k = i ; k < j ; k++ )
c[i][j] = min(c[i][j],c[i][k]+c[k+1][j]+d[i]*d[k+1]*d[j+1]);
}
g << c[1][n] << '\n';
f.close();
g.close();
return 0;
}