STL快速全排列函数next_permutation与pre_permutation

来源:互联网 发布:台湾ptt评论知乎文章 编辑:程序博客网 时间:2024/06/09 23:12

头文件:

#include<algorithm>

using namespace std;

用法:

对于一个大小为n的数组,调用next_permutation(a,a+n)可以得到数组a的下一个排列

调用pre_permutation(a,a+n)可以得到上一个全排列


分析next_permutation函数执行过程:

假设数列 d1,d2,d3,d4……

范围由[first,last)标记,调用next_permutation使数列逐次增大,这个递增过程按照字典序。例如,在字母表中,
abcd的下一单词排列为abdc,但是,有一关键点,如何确定这个下一排列为字典序中的next,而不是next->next->next……

一旦排列到达最大字典序,比如dcba,就返回false,同时重新设置该排列为最小字典序。


原创粉丝点击