Cod sursa(job #408953)

Utilizator al_flAlexandru Flavian al_fl Data 3 martie 2010 12:55:19
Problema Parantezare optima de matrici Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include<fstream>
#include<iostream>
using namespace std;
#define NMax 10001
#define INF 0x3f3f3f3f
ifstream f("podm.in");
ofstream g("podm.out");
long M[NMax][NMax],d[NMax],n;
void pd()
{
    int nr,i,j,k,kmin;
    long min;
    for(nr=2;nr<=n;nr++)
    for(i=1;i<=n-nr+1;i++)
    {j=i+nr-1;
    for(k=i,min=INF;k<j;k++)
        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];
            kmin=k;
        }
        M[i][j]=min;M[j][i]=kmin;
    }
}
int main()
{
    int k,i,z=1;
    f>>n;
    for(int i=1;i<=n+1;i++)
        {
            f>>k;
            if(i>1 &&i<n+1) {d[z]=k;d[z+1]=k;z+=2;}
            else
            {
                if(i==1){d[z]=k;z++;}
                else if(i==n+1) d[z]=k;
            }
        }
    pd();
    g<<M[1][n]<<endl;
    return 0;
}