std::next_permutation Implémentation Explication
L'algorithme std::next_permutation calcule la prochaine permutation lexicographiquement plus grande d'une séquence donnée. Comprendre son implémentation est crucial pour comprendre son comportement.
Aperçu de l'algorithme
L'algorithme parcourt la séquence de droite à gauche, à la recherche de l'"ascendant" le plus à gauche (c'est-à-dire , un élément plus petit que son successeur). Si aucun ascendant n'est trouvé, cela signifie que la séquence est par ordre décroissant, auquel cas il inverse la séquence pour obtenir la plus petite permutation.
Sinon, l'algorithme continue en trouvant le plus petit élément de la séquence à droite. de l'ascendeur (appelé "k"). Cet élément est ensuite échangé avec l'ascendeur. Enfin, les éléments à droite de l'ascendeur sont inversés pour maintenir l'ordre décroissant.
Rôles variables
Flux de boucle
La boucle itère jusqu'à ce que i atteigne le début de la séquence (début). Au sein de chaque itération :
Exemple
Considérons la séquence {1, 2, 4, 3} .
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3