Cod sursa(job #813192)

Utilizator manuelahordunaHorduna Manuela manuelahorduna Data 15 noiembrie 2012 00:10:54
Problema Parantezare optima de matrici Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.98 kb
#include <fstream>
#define lgmax 101
using namespace std;
ifstream fin("podm.in");
ofstream fout("podm.out");

void citire();
void pd();

long long int m[lgmax][lgmax];
long long int d[lgmax];
int n;
long long int  inf=1000000000;

int main()
{
    citire();
    pd();

    fout<<m[1][n]<<'\n';
    fout.close();
    return 0;
}

void citire()
{
    int i;
    fin>>n;
    for(i=0;i<n+1;i++)
        fin>>d[i];
}

void pd()
{
    int l, i,j,k,pozmin;
    int min;
    for(l=2;l<=n;l++)
        for(i=1;i<=n-l+1;i++)
        {
            j=i+l-1;
            //seinmultesc nr matrice de la Ai laAj
            for(k=i,min=inf;k<j;k++)
            {
                //det min si poz sau
                if(min>m[i][k]+m[k+1][j]+d[i-1]*d[k]*d[j])
                {
                    min=m[i][k]+m[k+1][j]+d[i-1]*d[k]*d[j];
                    pozmin=k;
                }
            }
            m[i][j]=min;
            m[j][i]=pozmin;
        }
}