std::next_permutation Implementierungserklärung
Der std::next_permutation-Algorithmus berechnet die nächstgrößere Permutation einer gegebenen Sequenz. Das Verständnis seiner Implementierung ist entscheidend für das Verständnis seines Verhaltens.
Übersicht über den Algorithmus
Der Algorithmus iteriert über die Sequenz von rechts nach links und sucht nach dem „Aufsteiger“ ganz links (d. h. , ein Element, das kleiner als sein Nachfolger ist). Wenn keine Oberlänge gefunden wird, bedeutet dies, dass die Reihenfolge in absteigender Reihenfolge vorliegt. In diesem Fall wird die Reihenfolge umgekehrt, um die kleinste Permutation zu erhalten.
Andernfalls fährt der Algorithmus damit fort, das kleinste Element in der Reihenfolge rechts zu finden der Oberlänge (genannt „k“). Dieses Element wird dann mit der Oberlänge getauscht. Schließlich werden die Elemente rechts von der Oberlänge umgekehrt, um die absteigende Reihenfolge beizubehalten.
Variable Rollen
Schleifenfluss
Die Schleife wird wiederholt, bis ich den Anfang der Sequenz erreicht (begin). Innerhalb jeder Iteration:
Beispiel
Betrachten Sie die Sequenz {1, 2, 4, 3} .
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3