Cod sursa(job #2148508)

Utilizator stoicageorgeStoica George stoicageorge Data 1 martie 2018 19:24:45
Problema Parantezare optima de matrici Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
#include <iostream>
#include <fstream>
#define NMAX 550
using namespace std;
ifstream fin ("podm.in");
ofstream fout ("podm.out");
unsigned long long int cmin[NMAX][NMAX], d[NMAX];
int n;
void citire();
void rezolvare();
void afis();
int main()
{
    citire();
    rezolvare();
      afis();
    return 0;
}
void afis()
{
   int i, j;

   fout<<cmin[1][n]<<'\n';
   /*
   */
}
void rezolvare()
{
   int i, j, q;
   unsigned long long int minim=0;
   int poz;
   for (i=1; i<n; i++)
      cmin[i][i+1]=d[i-1]*d[i]*d[i+1];
   for (i=2; i<n; i++)
      for (j=1; j<=n-i; j++)
      {
         minim=cmin[j][j]+cmin[j+1][j+i]+d[j-1]*d[j]*d[j+1];
         for (q=j; q<j+i; q++)
            if (cmin[j][q]+cmin[q+1][j+i]+d[j-1]*d[q]*d[j+i]<minim)
            {
               minim=cmin[j][q]+cmin[q+1][j+i]+d[j-1]*d[q]*d[j+i];
               poz=q;
            }

         cmin[j][j+i]=minim;
         cmin[j+i][j]=poz;
      }
}
void citire()
{
   int i;
   fin>>n;
   for (i=0; i<=n; i++)
      fin>>d[i];
}