Ich habe einige Bücher und ein Bücherregal. Ich möchte so viele Bücher wie möglich ins Regal stellen, aber ich habe eine Regel. Alle Maße der Bücher (Höhe, Breite und Tiefe) sollten im Regal eine nicht aufsteigende Reihenfolge bilden.
Das bedeutet, dass jedes Buch mindestens so hoch sein muss wie die Bücher, die es auf sich hat. Gleiches gilt für die Breite und Tiefe. Sie können die Bücher nicht drehen, um Höhe, Breite und Tiefe zu vertauschen.
Sie sollten ein Programm oder eine Funktion schreiben, die die Abmessungen aller Bücher als Eingabe-Ausgabe angibt oder die maximale Anzahl Bücher zurückgibt, die ich in das Regal stellen kann.
Eingang
- Eine Liste von Tripletts mit positiven ganzen Zahlen, wobei jedes Triplett die Höhe, Breite und Tiefe eines Buches definiert.
- Die Eingabeliste enthält mindestens ein Triplet.
- Zwei Bücher können in beliebig vielen Dimensionen gleich lang sein.
Ausgabe
- Eine einzelne positive ganze Zahl, die maximale Anzahl von Büchern, die unter Einhaltung der Regel in das Regal passen.
Zeitliche Komplexität
Ihr Algorithmus sollte im ungünstigsten Fall ein Zeitkomplexitätspolynom in Bezug auf die Anzahl der Bücher haben. Dies bedeutet, dass zum Beispiel die folgenden Zeitkomplexitäten alle gültig sind: O (N ^ 3), O (log (N) * N ^ 2), O (N) und die folgenden sind ungültig: O (2 ^ N), O (N!), O (N ^ N).
Beispiele
Eingabe => Ausgabe
(1, 1, 1) => 1
(5, 2, 5), (1, 3, 5) => 1
(5, 2, 5), (1, 2, 5) => 2
(2, 2, 2), (2, 2, 2), (2, 2, 2), (1, 3, 6) => 3
(1, 2, 5), (1, 3, 5), (1, 2, 8), (1, 2, 5), (7, 7, 7) => 4
(5, 19, 3), (9, 4, 16), (15, 16, 13), (7, 4, 16), (1, 13, 14), (20, 1, 15), (9, 8, 19), (4, 11, 1) => 3
(1, 1, 18), (1, 13, 7), (14, 1, 17), (8, 15, 16), (18, 8, 12), (8, 8, 15), (10, 1, 14), (18, 4, 6), (10, 4, 11), (17, 14, 17), (7, 10, 10), (19, 16, 17), (13, 19, 2), (16, 8, 13), (14, 6, 12), (18, 12, 3) => 5
Dies ist Codegolf, also gewinnt der kürzeste Eintrag.
Eine ähnliche interessante Herausforderung beim Sortieren von Büchern: Book Stack Sort .