Cod sursa(job #1344695)

Utilizator superman_01Avramescu Cristian superman_01 Data 16 februarie 2015 22:08:12
Problema Parantezare optima de matrici Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include <fstream>
#include <algorithm>
#include <vector>

#define NMAX 505
#define get_max(a,b) ((a)>(b)?(a):(b))
#define get_min(a,b) ((a)<(b)?(a):(b))

using  namespace std;

ifstream in ( "podm.in" );
ofstream out ( "podm.out" );

int DP[NMAX][NMAX] , D[NMAX] ;
int N ;

int main ( void ){
  int i , j;
  in >> N ;
  for ( i = 0 ; i <= N ; ++i )
  in >> D[i];
  for ( int step = 1 ; step < N ; ++step )
    for ( i = 1 ; i <= N - step ; ++i ){
         j = i + step ;
    for ( int k = i + 1 ; k < j ; ++ k )
    DP[i][j] = get_min(DP[i][k] + DP[k+1][j] + D[i-1]*D[j]*D[j+1], DP[i][j]);
    }
 out << DP[1][N];
 return 0;
}