Sagen wir, ich habe ein Array von 5 Elementen. Mein Programm weiß, dass es immer 5 Elemente gibt und wenn es sortiert ist, ist es immer nur 1,2,3,4,5.Finden Reihenfolge eines Arrays mit minimalen Speicher und Zeit
Nach Permutationsformel, d. H. N!/(N-r)! Wir können es auf 120 Arten bestellen.
In C++ mit Std :: Next_Permutation kann ich alle diese 120 Bestellungen generieren.
Nun akzeptiert mein Programm/Routine ein Eingabeargument als eine Zahl im Bereich von 1 bis 120 und gibt die spezifische Reihenfolge eines Arrays als Ausgabe.
Dies funktioniert gut für kleine Array-Größen, wie ich std :: next_permutation wiederholen kann, bis das Input-Parameter übereinstimmt.
Das eigentliche Problem ist, wie kann ich es in weniger Zeit tun, wenn mein Array 25 Elemente oder mehr hat? Für 25 Elemente ist die Anzahl der möglichen Aufträge: 15511210043330985984000000.
Gibt es eine Technik, die ich leicht finden kann die Reihenfolge der Zahlen mit einer bestimmten Nummer als Eingabe?
Vielen Dank im Voraus :)
Ich bin verwirrt, was Sie wollen. Es klingt wie wenn ich 120 gebe, wollen Sie 1, 2, 3, ..., 119, 120. – chris
Wenn Sie keinen Kontext angeben, warum Sie das brauchen, kann man nur zu dem Schluss kommen, dass dies eine Schule ist Aufgabe ... – rbaleksandar
@chris, Wenn ich 120 gebe, ist es 5,4,3,2,1, Unter allen Möglichkeiten. Liste hat 120 Einträge. {1,2,3,4,5} {1,2,3,5,4} {1,2,4,3,5} {1,2,4,5,3} {1,2, 5,3,4} {1,2,5,4,3} ........................ {5,2,1,3, 4} {5,2,1,4,3} {5,2,3,1,4} {5,2,3,4,1} {5,2,4,1,3} {5,3 , 4,2,1} {5,4,1,2,3} {5,4,1,3,2} {5,4,2,1,3} {5,4,2,3,1 } {5,4,3,1,2} {5,4,3,2,1} –