Menu
CoddyTech

Matrix Chain Multiplication

Eine Matrixkette wird durch dims beschrieben: Matrix i hat dims[i] Zeilen und dims[i+1] Spalten, sodass jede Matrix zur nächsten passt. Die Multiplikation einer p × q-Matrix mit einer q × r-Matrix benötigt p × q × r skalare Multiplikationen und ergibt eine p × r-Matrix. Jede Klammerung ergibt dasselbe Endprodukt, aber nicht mit denselben Kosten. Gib die geringstmögliche Anzahl skalarer Multiplikationen zurück, die zum Multiplizieren der gesamten Kette benötigt wird.

Funktion

matrixChainOrder(dims: integer-array) → integer
dimsinteger-array
Die Größen entlang der Kette: Matrix i hat die Dimensionen dims[i] × dims[i+1]
Gibt zurückinteger
die geringstmögliche Anzahl an Skalarmultiplikationen, um die gesamte Kette zu multiplizieren

Einschränkungen

  • 2 ≤ dims.length ≤ 100, somit umfasst die Kette zwischen 1 und 99 Matrizen.
  • 1 ≤ dims[i] ≤ 100
  • Die Antwort beträgt höchstens 98 × 106 und liegt damit deutlich innerhalb des Bereichs einer vorzeichenbehafteten 32-Bit-Ganzzahl.

Beispiele

Eingabe
dims = [4, 10, 3, 12]
Ausgabe
264
Erklärung
Die Multiplikation der ersten beiden kostet 4 × 10 × 3 = 120 und ergibt eine 4 × 3-Matrix. Die Multiplikation mit der 3 × 12-Matrix kostet zusätzlich 144: insgesamt 264. Die andere Reihenfolge kostet 360 + 480 = 840.
challenge icon

Weiterführende Frage

Kannst du auch zählen, wie viele verschiedene Klammerungen die minimalen Kosten erreichen?

Code zurücksetzen
def matrixChainOrder(dims):
    # Schreibe hier den Code

Test #1

Test #2

Test #3

Argument

dims = [4, 10, 3, 12]

Erwartete Ausgabe

264