Cod sursa(job #1551094)

Utilizator raulion3331Raul Berari raulion3331 Data 15 decembrie 2015 09:24:38
Problema Parantezare optima de matrici Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.36 kb
#include <fstream>
#include <iomanip>

using namespace std;

ifstream fin("podm.in");
ofstream fout("podm.out");

int n, m[100][100], v[100];


int main()
{
    fin >> n;
    for (int i = 0; i <= n; i++)
        fin >> v[i];

    for (int i = 1; i <= n; i++)
    {
        for (int j = i; j <= n; j++)
        {
            if (j - i == 0)
                m[i][j] = 0;
            else if (j - i == 1)
            {
                m[i][j] = v[i-1] * v[i] * v[i+1];
            }
            else
            {
                int mini = 9999999;
                for (int k = i; k < j; k++)
                {
                    int ioi = m[i][k] + m[k+1][j] + (v[i-1] * v[k] * v[j]);
                    if (ioi < mini)
                        mini = ioi;
                }
                m[i][j] = mini;
            }
        }
    }

    for (int i = 1; i <= n; i++)
    {
        for (int j = i; j <= n; j++)
        {
            if (j - i > 1)
            {
                int mini = 9999999;
                for (int k = i; k < j; k++)
                {
                    int ioi = m[i][k] + m[k+1][j] + (v[i-1] * v[k] * v[j]);
                    if (ioi < mini)
                        mini = ioi;
                }
                m[i][j] = mini;
            }
        }
    }

    fout << m[1][n];



    return 0;
}