Cod sursa(job #676758)

Utilizator GaborGabrielFMI - GabrielG GaborGabriel Data 9 februarie 2012 16:18:51
Problema Parantezare optima de matrici Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <fstream>
using namespace std;
ifstream f("podm.in");
ofstream g("podm.out");

int n,p[501],m[10001][10001],i,j,mm,q;

int minim(int i,int j)
{
    int kkk;
    mm= m[i][i] + m[i+1][j] + p[i-1]*p[i]*p[j];
    for(kkk=i;kkk<j;kkk++)
    {
        q = m[i][kkk] + m[kkk+1][j] + p[i-1]*p[kkk]*p[j];
        if(q<mm)
            mm=q;
    }
    return mm;
}

int main()
{
    f>>n;
    for(i=0;i<=n;i++)
        f>>p[i];
    for(i=1;i<=n;i++)
    {
        m[i][i] = 0;
        m[i][i+1] = p[i-1]*p[i]*p[i+1];
    }
    int k;
    for(k=2;k<n;k++)
        for(i=1;i<=n;i++)
            if(i+k<=n)
                m[i][i+k] = minim(i,i+k);
    g<<m[1][n]<<'\n';
    return 0;
}