Cod sursa(job #1355332)

Utilizator andreea.ciobanuCiobanu Andreea andreea.ciobanu Data 22 februarie 2015 16:47:05
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <fstream>
#define DMAX 505

using namespace std;

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

long long int d[DMAX];
long long int nrmin[DMAX][DMAX];
int n;

void pd();

int main()
{
    int i;
    fin>>n;
    for(i=0; i<=n; i++)
        fin>>d[i];
    pd();
    fout<<nrmin[1][n];
    return 0;
}

void pd ()
{
    int i, j, k, lg;
    for(i=1; i<n; ++i)
        nrmin[i][i+1]=d[i-1]*d[i]*d[i+1];

    for(lg=3; lg<=n; lg++)
        for(i=1; i<=n-lg+1; i++)
            {
            j=i+lg-1;
            nrmin[i][j]=nrmin[i+1][j]+d[i-1]*d[i]*d[j];
            nrmin[j][i]=i;
            for(k=i+1; k<j; k++)
                if(nrmin[i][j] > nrmin[i][k]+nrmin[k+1][j]+d[i-1]*d[k]*d[j] )
                    {
                    nrmin[i][j]=nrmin[i][k]+nrmin[k+1][j]+d[i-1]*d[k]*d[j];
                    nrmin[j][i]=k;
                    }
            }
}