Cod sursa(job #370631)

Utilizator nicolaetitus12Nicolae Titus nicolaetitus12 Data 1 decembrie 2009 18:27:28
Problema Parantezare optima de matrici Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 kb
#include <stdio.h>
#define INF 987654321
#define N 502
int mat[N][N];//incepe la N si are lungime N
int a[N];
int main ()
{int i,j,k,n,min,t;
 freopen("podm.in","r",stdin);
 freopen("podm.out","w",stdout);
 scanf("%d",&n);
 
 for (i=1;i<=n+1;i++)
  scanf("%d",&a[i]);
 for (i=1;i<n;i++)
 {mat[i][2]=a[i]*a[i+1]*a[i+2];
  mat[i][1]=0;
 }

 for (i=3;i<=n;i++)//lungimea produsului
 {for (j=1;j<=n-i+1;j++)//de unde incepe
  {for (min=INF,k=1;k<i;k++) //-- ----
   {if(min>(t=mat[j][k]+mat[j+k][i-k]+a[j]*a[j+k]*a[j+i]))
    {min=t;
    }
   }
   mat[j][i]=min;
  }
 }
 printf("%d",mat[1][n]);
 return 0;
}