如何使用C++的next/prev_permutation
1、next_permutation,中文意思是“下一个排列”,正如它的名字一样,它就是用来求下一个排列的
例如 1 2 3 4 5 的下一个排列是 1 2 3 5 4,再下一个是 1 2 4 3 5
next_permutation(首指针,尾指针); 区间左闭右开
要在头文件中加上 "#include<algorithm>"
图中,"a","a+5"都是指针

2、next_permutation 也支持迭代器
也就是我们可以这么写:next_permutation(a.begin(),a.end());
图中的 "a.begin()","a.end()"都是迭代器

3、next_permutation 在求下一个排列的时候,还会返回是否有比它排名更靠后的排列,所以我们可以根据 next_permutation 的返回值求出全排列
例如 "4 3 2 1"就没有下一个排列,它是排名最靠后的
如图,do-while 循环
n个不重复的元素的全排列应该有 n!(n的阶乘,即1*2*3*……*n) 个

4、我们能不能手写代码代替 next_permutation 的功能呢?
可以,不过很麻烦
如图,该代码来源于网络

5、prev_permutation(上一个排列),和 next_permutation 正好相反,但使用方法差不多,这里就不再赘述


6、手写prev_permutation
该代码来源于网络

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
阅读量:76
阅读量:135
阅读量:63
阅读量:165
阅读量:41