Cod sursa(job #468573)

Utilizator purdea.andreiPurdea Andrei purdea.andrei Data 4 iulie 2010 08:07:46
Problema Parantezare optima de matrici Scor 70
Compilator c Status done
Runda Arhiva educationala Marime 0.59 kb
#include <stdio.h>
#define MAXN 5010
int n, i, j, q, k, l;
int p[MAXN];
int m[MAXN][MAXN];
int s[MAXN][MAXN];
int main() {
  freopen("podm.in", "r", stdin);
  freopen("podm.out", "w", stdout);
  scanf("%d", &n);
  for (i=0;i<=n;++i) {
    scanf("%d", &p[i]);
    m[i][i] = 0;
  }
  for (l=2;l<=n;++l) {
    for (i=1;i<=n;++i) {
      j = i + l - 1;
      m[i][j] = -1;
      for (k=i;k<j;k++) {
        q = m[i][k] + m[k+1][j] + p[i-1]*p[k]*p[j];
        if (m[i][j]==-1 || q < m[i][j]) {
          m[i][j] = q;
          s[i][j] = k;
        }
      }
    }
  }
  printf("%d\n", m[1][n]);
  return 0;
}