Cod sursa(job #501533)

Utilizator juniorOvidiu Rosca junior Data 15 noiembrie 2010 17:45:09
Problema Parantezare optima de matrici Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
// ? p

#include <fstream>
#include <cstdlib>
#include <iomanip>

using namespace std;

ifstream fi("podm.in");
ofstream fo("podm.out");
int n, x[101], a[101][101];

int Min(int st, int dr) {
  int k, vmin, aux;

  vmin = 1 << 30;
  for (k = st; k <= dr - 1; k++) {
    aux = a[st][k] + a[k+1][dr] + x[st] * x[k+1] * x[dr+1];
    if (aux < vmin)
      vmin = aux;
  }
  return vmin;
}

void d_mat () {
  int l, c;

  for (l = 1; l <= n; l++) {
    for (c = 1; c <= n; c++)
      fo << setw(5) << a[l][c];
    fo << endl;
  }
  fo << endl;
}

int main() {
  int l, c, d, i;

  fi >> n;
  for (i = 1; i <= n + 1; i++)
    fi >> x[i];
//  for (i = 1; i <= n; i++)
//    a[i][i] = x[i];
  for (d = 1; d <= n - 1; d++) {
    for (l = 1; l <= n - d; l++)
      a[l][l+d] = Min(l, l + d);
    d_mat();
  }
  fo << a[1][n];
  return 0;
}