Cod sursa(job #654971)

Utilizator slycerdan dragomir slycer Data 31 decembrie 2011 14:59:40
Problema Parantezare optima de matrici Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.17 kb
/* 
 * File:   Parantezareoptimadematrici.cpp
 * Author: slycer
 *
 * Created on December 31, 2011, 2:41 PM
 */

#include <cstdlib>
#include <fstream>
#include <iostream>
#include <cmath>
using namespace std;

/*
 * 
 */
int main(int argc, char** argv) {
    ifstream input("podm.in");
    ofstream output("podm.out");
    int n; 
    int * data; 
    int ** dp; 
    input >> n; 
    data = new int[n+1]; 
    dp = new int * [n]; 
    for ( int i=0; i<n; i++){
        dp[i] = new int[n]; 
    }
    
    for ( int i=0; i<=n; i++){
        input >> data[i]; 
    }
    for ( int i=1; i<n; i++ ){
        for ( int j=0; j<n-i; j++){
            //cout << j << " " << ( j+i ) << endl;
            int linie = j; 
            int coloana = j+i; 
            if ( i == 1 ){
                dp[linie][coloana] = data[linie]*data[linie+1]*data[linie+2];
            } else {
                dp[linie][coloana] =  min ( dp[linie+1][coloana] + data[linie]* data[linie+1]*data[coloana+1],
                        dp[linie][coloana-1] + data[linie] * data[coloana] * data[coloana+1]
                        );
                       
            }
        }
    }
    output << dp[0][n-1];
    return 0;
}