Menu
CoddyTech

Matrix Chain Multiplication

Une chaîne de matrices est décrite par dims : la matrice i a dims[i] lignes et dims[i+1] colonnes, de sorte que chaque matrice peut être multipliée par la suivante. Multiplier une matrice p × q par une matrice q × r nécessite p × q × r multiplications scalaires et donne une matrice p × r. Toutes les façons de placer les parenthèses donnent le même produit final, mais pas au même coût. Retourne le nombre minimal de multiplications scalaires nécessaires pour multiplier toute la chaîne.

Fonction

matrixChainOrder(dims: integer-array) → integer
dimsinteger-array
les dimensions le long de la chaîne : la matrice i est dims[i] × dims[i+1]
Renvoieinteger
le plus petit nombre de multiplications scalaires nécessaire pour multiplier toute la chaîne

Contraintes

  • 2 ≤ dims.length ≤ 100, la chaîne contient donc entre 1 et 99 matrices.
  • 1 ≤ dims[i] ≤ 100
  • La réponse est au plus égale à 98 × 106, bien en deçà de la limite d’un entier signé sur 32 bits.

Exemples

Entrée
dims = [4, 10, 3, 12]
Sortie
264
Explication
Multiplier les deux premières coûte 4 × 10 × 3 = 120 et laisse une matrice de 4 × 3, qui, multipliée par la matrice de 3 × 12, ajoute 144 : 264. L’autre ordre coûte 360 + 480 = 840.
challenge icon

Pour aller plus loin

Peux-tu également compter combien de parenthésages différents atteignent le coût minimal ?

Réinitialiser le code
def matrixChainOrder(dims):
    # Écrivez le code ici

Test #1

Test #2

Test #3

Argument

dims = [4, 10, 3, 12]

Résultat attendu

264