Cod sursa(job #536102)

Utilizator andrey932Andrei andrey932 Data 18 februarie 2011 11:33:39
Problema Parantezare optima de matrici Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <iostream>
#include <fstream>

#define MAXN 502
#define INF 2000000000

using namespace std;

ifstream fin("podm.in");
ofstream fout("podm.out");
int n,i,j,k,a,b,d[MAXN],din[MAXN][MAXN];

int main()
{
    fin>>n;
    for(i=0;i<=n;i++) {
        fin>>d[i];
    }
    for(i=0;i<=n;i++) {
        din[i][i]=0;
    }
    for(i=1;i<n;i++) {
        din[i][i+1]=d[i-1]*d[i]*d[i+1];
    }

    for(k=2;k<n;k++) {
        for(i=1;i<=n;i++) {
            din[i][i+k]=INF;
            for(j=0;j<=k;j++) {
                din[i][i+k]=min(din[i][i+k],din[i][i+j]+d[i-1]*d[i+j]*d[i+k]+din[i+j+1][i+k]);
            }
        }
    }
    fout<<din[1][n];
    fout.close();
    return 0;
}