std::next_permutation 实现说明
std::next_permutation 算法计算给定序列的下一个字典顺序更大的排列。理解其实现对于理解其行为至关重要。
算法概述
该算法从右到左迭代序列,搜索最左边的“上升部分”(即,小于其后继的元素)。如果没有找到上升符,则意味着序列是降序排列,在这种情况下,它将反转序列以获得最小排列。
否则,算法继续寻找序列中向右的最小元素上升器(称为“k”)。然后该元素与上行元素交换。最后,将上升部分右侧的元素反转以保持降序。
变量角色
循环流
循环迭代,直到 i 到达序列的开头(开始)。在每次迭代中:
示例
考虑序列 {1, 2, 4, 3} .
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3