Cod sursa(job #2052173)

Utilizator StefanTifreaStefan Tifrea StefanTifrea Data 30 octombrie 2017 10:13:57
Problema Parantezare optima de matrici Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.12 kb
#include <iostream>
#include <fstream>
using namespace std;
int c[100][100],n,i,j,k,l,d[100],mmin,val,s[100][100];
void optim(int n,int d[100],int c[100][100],int s[100][100])
{
    int cost;
    for(i=1;i<=n;i++)
        c[i][i]=0;
    for(l=2;l<=n;l++)
        for(i=1;i<=n-l+1;i++)
        {
            j=i+l-1;
            c[i][j]=1000000000;
            for(k=1;k<=j-1;k++)
                cost=c[i][k]+c[k+1][j]+d[i-1]*d[k]*d[j];
                if(cost<c[i][j])
                {
                    c[i][j]=cost;
                    s[i][j]=k;
                }
        }

}
int main()
{
    cin>>n;
    for(i=0;i<=n;i++)
        cin>>d[i];
    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++)
        {
            if(i==j)
                c[i][j]=0;
            if(i==j-1)
                c[i][j]=d[i-1]*d[i]*d[i+1];
            mmin=c[i][i]+c[i+1][j]+d[i-1]*d[i]*d[j];
            for(k=i+1;k<=j-1;k++)
            {
                val=c[i][k]+c[k+1][j]+d[i-1]*d[k]*d[j];
                if(val<mmin)
                    mmin=val;
            }
        }
    s[i][j]=k;
    cout<<mmin;

}