Menu
CoddyTech

Matrix Chain Multiplication

Una cadena de matrices se describe mediante dims: la matriz i tiene dims[i] filas y dims[i+1] columnas, por lo que cada matriz encaja con la siguiente. Multiplicar una matriz de p × q por una matriz de q × r requiere p × q × r multiplicaciones escalares y da como resultado una matriz de p × r. Todas las formas de colocar los paréntesis dan el mismo producto final, pero no tienen el mismo costo. Devuelve el menor número de multiplicaciones escalares necesarias para multiplicar toda la cadena.

Función

matrixChainOrder(dims: integer-array) → integer
dimsinteger-array
los tamaños a lo largo de la cadena: la matriz i tiene dimensiones dims[i] × dims[i+1]
Devuelveinteger
la menor cantidad de multiplicaciones escalares necesarias para multiplicar toda la cadena

Restricciones

  • 2 ≤ dims.length ≤ 100, por lo que la cadena contiene entre 1 y 99 matrices.
  • 1 ≤ dims[i] ≤ 100
  • La respuesta es como máximo 98 × 106, muy por debajo del límite de un entero con signo de 32 bits.

Ejemplos

Entrada
dims = [4, 10, 3, 12]
Salida
264
Explicación
Multiplicar los dos primeros cuesta 4 × 10 × 3 = 120 y deja una matriz de 4 × 3, que al multiplicarse por la matriz de 3 × 12 añade 144: 264. El otro orden cuesta 360 + 480 = 840.
challenge icon

Para ir más allá

¿También puedes contar cuántas parentizaciones diferentes alcanzan el costo mínimo?

Restablecer código
def matrixChainOrder(dims):
    # Escribe el código aquí

Prueba #1

Prueba #2

Prueba #3

Argumento

dims = [4, 10, 3, 12]

Salida Esperada

264