Cod sursa(job #1598148)

Utilizator andrew_assassin789Andrei Manea andrew_assassin789 Data 12 februarie 2016 17:28:51
Problema Parantezare optima de matrici Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <fstream>
#include <climits>
#define w 501
using namespace std;
int n;int d[w];int m[w][w];
void dinamica()
{
    int i,j,k,l,q;
    /*for (l=1;l<=n;l++)
        m[l][l]=0;*/
    for (l=2;l<=n;l++)
    {
        //pentru fiecare secventa de lungime l
        for (i=1;i<=n-l+1;i++)
        {
            j=i+l-1;
            m[i][j]=INT_MAX;
            //evaluam produsul A[i]*A[i+1]*...*A[j-1]*A[j]
            for (k=i;k<=j-1;k++)
            {
                q=m[i][k]+m[k+1][j]+d[i-1]*d[k]*d[j];
                //A[i]*A[i+1]*...*A[j]=(A[i]*A[i+1]*...*A[k])*(A[k]*A[k+1]*...*A[j])
                if (q<m[i][j]) m[i][j]=q;
            }
        }
    }
}
int main()
{
    ifstream f("podm.in");
    ofstream g("podm.out");
    int i,j;
    f>>n;
    for (i=0;i<=n;i++)
        f>>d[i];
    dinamica();
    g<<m[1][n]<<'\n';
    f.close();
    g.close();
    return 0;
}