Cod sursa(job #503039)

Utilizator nickyyLal Daniel Emanuel nickyy Data 21 noiembrie 2010 11:43:24
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <iostream>
#include <fstream>
using namespace std;
#define nmax 505
#define inf 100000000000000000LL
int n,p[nmax];
long long m[nmax][nmax];

    long long mem(int i,int j)
    {   int k; long long q;
        if(m[i][j]<inf) return m[i][j];
        if(i==j) m[i][j]=0;
        else
        {   for(k=i;k<j;k++)
            {   q=mem(i,k)+mem(k+1,j)+(long long)p[i-1]*p[k]*p[j];
                if(q<m[i][j]) m[i][j]=q;
            }
        }
        return m[i][j];
    }

int main(void)
{   int i,j;
    ifstream fin("podm.in");
    fin>>n;
    for(i=0;i<=n;i++) fin>>p[i];
    fin.close();
    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++)   m[i][j]=inf;
    ofstream fout("podm.out");
    fout<<mem(1,n);
    fout.close();
    return 0;
}