Cod sursa(job #1384082)

Utilizator rogoz.bogdanRogoz Bogdan rogoz.bogdan Data 10 martie 2015 20:49:24
Problema Parantezare optima de matrici Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <fstream>
#define MX 501
using namespace std;

ifstream fin("podm.in");
ofstream fout("podm.out");
int n, d[MX];
long long M[MX][MX];

void Dinamic()
{
    int nr,i,j,k;
    long long minim;
    for(nr=2; nr<=n; nr++)  //numarul de matrici ce se inmultesc
    {
        for(i=1; i<=n-nr+1; i++)
        {
            j = i+nr-1;
            //se inmultesc nr matrice, de la Ai la Aj

            for(k=i, minim=100000000000000; k<j; k++)
            {
                if(M[i][k] + M[k+1][j] + d[i-1]*d[k]*d[j] < minim)
                {
                    minim = M[i][k] + M[k+1][j] + d[i-1]*d[k]*d[j];
                }
            }

            M[i][j] = minim;
        }
    }

}

int main()
{
    int i;
    fin>>n;
    fin>>d[0];

    for(i=1; i<=n; i++) fin>>d[i];

    Dinamic();

    fout<<M[1][n];

    fin.close(); fout.close();
    return 0;
}