Cod sursa(job #1312448)

Utilizator refugiatBoni Daniel Stefan refugiat Data 9 ianuarie 2015 15:37:26
Problema Parantezare optima de matrici Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include<iostream>
#include<fstream>
#include<stdio.h>
using namespace std;

int main()
{
    ifstream si;
    si.open("podm.in");

    ofstream so;
    so.open("podm.out");
    //FILE*so=fopen("podm.out","w");
    int n;
    si>>n;
    int d[n+1];
    int i;
    for(i=0;i<=n;++i)
        si>>d[i];
    int m[n+1][n+1];
    m[n][n]=0;
    for(i=n-1;i>0;--i)
    {
        m[i][i]=0;
        m[i][i+1]=d[i-1]*d[i]*d[i+1];
    }
    int j,k;
    for(i=2;i<n;++i)
        for(j=n-i;j>0;--j)
        {
            long long minn=m[j][j]+m[j+1][j+i]+d[j-1]*d[j]*d[j+i];
            for(k=j+1;k<i+j;++k)
            {
                if(minn>m[j][k]+m[k+1][j+i]+d[j-1]*d[k]*d[j+i])
                    minn=m[j][k]+m[k+1][j+i]+d[j-1]*d[k]*d[j+i];
            }
            m[j][j+i]=minn;
        }
    so<<m[1][n];
}