Diese Herausforderung besteht darin, die effizienteste Multiplikationsreihenfolge für ein Produkt aus mehreren Matrizen zu berechnen .
Die Größe der Matrizen wird in einer einzelnen Zeile der Standardeingabe angegeben. Sie sollten eine Liste von Ganzzahlen in der Standardausgabe drucken, die die Reihenfolge angibt, in der die Multiplikationen durchgeführt werden sollen, um die Gesamtkosten für die Multiplikation zu minimieren.
Beispiel 1
Eingang
5x6 6x12 12x100 100x7
Ausgabe
3 2 1
Die Eingabezeile ist eine durch Leerzeichen getrennte Liste von Matrixgrößen, von denen jede die Anzahl der Zeilen ist, gefolgt von einer x, gefolgt von der Anzahl der Spalten. Für das Beispiel gibt es 4 Matrizen, die miteinander multipliziert werden müssen (also 3 Gesamtmultiplikationen), und da die Matrixmultiplikation assoziativ ist, können sie in beliebiger Reihenfolge durchgeführt werden.
Die Ausgabe sollte die Reihenfolge sein, in der die Multiplikationen durchgeführt werden, um die Gesamtkosten zu minimieren. Dies sollte eine durch Leerzeichen getrennte Liste von Ganzzahlen sein, die den Index der Multiplikation darstellen, die als nächstes ausgeführt werden soll. Für N Matrizen sollte diese Liste die Nummern 1 bis einschließlich N-1 enthalten. In Beispiel 1 3 2 1bedeutet die Ausgabe, dass Sie 12x100 * 100x7zuerst die 6x12 * 12x7Multiplikation durchführen sollten , dann die Multiplikation (die zweite Matrix multipliziert mit dem Ergebnis des vorherigen Schritts) und schließlich die resultierende 5x6 * 6x7Multiplikation.
Die Matrixmultiplikationen sind immer kompatibel, dh die Anzahl der Spalten einer Matrix stimmt mit der Anzahl der Zeilen der nachfolgenden Matrix überein. Angenommen , die Kosten für die Multiplikation zweier Matrizen AxB * BxCist A*B*C.
Ihr Code muss Listen mit bis zu 100 Matrizen mit einer Dimension von jeweils bis zu 999 verarbeiten und dies in angemessener Zeit.
Beispiel 2
Eingang
5x10 10x5 5x15 15x5
Ausgabe
1 3 2
oder
3 1 2
Beispiel 3
Eingang
22x11 11x78 78x123 123x666 666x35 35x97 97x111 111x20 20x50
Ausgabe
2 3 4 5 6 7 8 1
Hinweis: Zur Überprüfung betragen die besten Gesamtkosten für die drei Beispiele 9114, 750 und 1466344.
Der kürzeste Code gewinnt!