Cod sursa(job #650389)

Utilizator ChiroscaIrimiaEchipa Chirosca Irimia ChiroscaIrimia Data 17 decembrie 2011 22:37:50
Problema Parantezare optima de matrici Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 0.96 kb
#include<stdlib.h>
#include<stdio.h>
#include<conio.h>

int min(int a,int b)
   {
    if(a<b) return a;
    return b;
   }

int main()
{
    FILE *f,*g;
    f=fopen("podm.in","r");
    g=fopen("podm.out","w");
    
    int dim[501],n,i,j,d,k,M[501][501],infinit=1000000;
    
    fscanf(f,"%d",&n);
    for(i=0;i<=n;i++)
       fscanf(f,"%d",&dim[i]);
    
    for(i=1;i<=n;i++)
       {
        M[i][i]=0;
        M[i][i+1]=dim[i-1]*dim[i]*dim[i+1];
       }
    for(i=1;i<n-1;i++)
       for(j=i+2;j<=n;j++)
          M[i][j]=infinit;
    
    
    for(d=1;d<=n;d++)    
       for(i=1;i<=n-d;i++)
          for(k=i;k<=i+d;k++)
             M[i][i+d]=min(M[i][i+d],M[i][k]+M[k+1][i+d]+dim[i-1]*dim[k]*dim[i+d]);
    
    for(i=1;i<=n;i++)
       {
        for(j=1;j<=n;j++)
           fprintf(g,"%d ",M[i][j]);
        fprintf(g,"\n");
       }
    printf("%d",M[1][n]);
    fclose(f);
    fclose(g);
    getch();
    return 0;
}