std::next_permutation 구현 설명
std::next_permutation 알고리즘은 주어진 시퀀스의 사전순으로 더 큰 다음 순열을 계산합니다. 동작을 이해하려면 구현을 이해하는 것이 중요합니다.
알고리즘 개요
알고리즘은 오른쪽에서 왼쪽으로 시퀀스를 반복하여 가장 왼쪽의 "오름차순"(예: , 후속 요소보다 작은 요소). 어센더가 발견되지 않으면 시퀀스가 내림차순임을 의미하며, 이 경우 시퀀스를 뒤집어 가장 작은 순열을 얻습니다.
그렇지 않으면 알고리즘은 오른쪽 시퀀스에서 가장 작은 요소를 찾는 방식으로 계속됩니다. 어센더("k"라고 함). 그런 다음 이 요소는 어센더로 교체됩니다. 마지막으로, 내림차순을 유지하기 위해 어센더 오른쪽에 있는 요소가 반전됩니다.
가변 역할
루프 흐름
루프는 i가 시퀀스의 시작(시작)에 도달할 때까지 반복됩니다. 각 반복 내에서:
예
수열 {1, 2, 4, 3}을 고려하세요. .
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3