Cod sursa(job #1316080)

Utilizator sorina.andreiAndrei Sorina sorina.andrei Data 13 ianuarie 2015 15:09:25
Problema Parantezare optima de matrici Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <fstream>
#include <iostream>

using namespace std;
int main()
{
    int n,m[500][500];
    ifstream fin ("podm.in");
    ofstream fout ("podm.out");
    fin>>n;
    int v[n+1];
    for (int i=1; i<=n+1; ++i)
    {
        fin>>v[i];
    }
    for(int i=1; i<=n; ++i)
    {
        for(int j=1; j<=n; ++j)
        {
            if(j+i>n)continue;
            if(i==1)
            {
                m[j][j+i]=v[j]*v[j+1]*v[j+2];
            }
            else
            {
                for(int k=j; k<j+i; ++k)
                {
                    if(m[j][j+i]==0)m[j][j+i]=m[j][k]+m[k+1][j+i]+v[j]*v[k+1]*v[j+i+1];
                    else         m[j][j+i]=min(m[j][k]+m[k+1][j+i]+v[j]*v[k+1]*v[j+i+1],m[j][j+i]);
                }

            }
        }

    }
    fout<<m[1][n];



}