Cod sursa(job #1704001)

Utilizator georgiana328Tanase Georgiana Alexandra georgiana328 Data 17 mai 2016 21:30:17
Problema Parantezare optima de matrici Scor 50
Compilator c Status done
Runda Arhiva educationala Marime 0.84 kb
#include <stdio.h>
#include <stdlib.h>
#define MININF 1000000000
int c[100][100],d[101],n;
FILE *f,*g;
void citire()
{
    f=fopen("podm.in","r");
    int i;
    fscanf(f,"%d",&n);
    for(i=0; i<=n; i++)fscanf(f,"%d",&d[i]);
    fclose(f);
}
void dinamica()
{
    int i,j,k,min,kmin,p;
    for(i=1; i<=n; i++)c[i][i]=0;
    for(p=1; p<=n-1; p++)
        for(i=1; i<=n-p; i++)
        {
            j=i+p;
            min=MININF;
            kmin=-1;
            for(k=i; k<=j-1; k++)
                if(min>c[i][k]+c[k+1][j]+d[i-1]*d[k]*d[j])
                {
                    min=c[i][k]+c[k+1][j]+d[i-1]*d[k]*d[j];
                    kmin=k;
                }
            c[i][j]=min;
            c[j][i]=kmin;
        }
    g=fopen("podm.out","w");
    fprintf(g,"%d",c[1][n]);
    fclose(g);
}
int main()
{
    citire();
    dinamica();
    return 0;
}