如何使用C++的next/prev_permutation

2025-11-01 12:38:07

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"都是指针

如何使用C++的next/prev_permutation

2、next_permutation 也支持迭代器

也就是我们可以这么写:next_permutation(a.begin(),a.end());

图中的 "a.begin()","a.end()"都是迭代器

如何使用C++的next/prev_permutation

3、next_permutation 在求下一个排列的时候,还会返回是否有比它排名更靠后的排列,所以我们可以根据 next_permutation 的返回值求出全排列

例如 "4 3 2 1"就没有下一个排列,它是排名最靠后的

如图,do-while 循环

n个不重复的元素的全排列应该有 n!(n的阶乘,即1*2*3*……*n) 个

如何使用C++的next/prev_permutation

4、我们能不能手写代码代替 next_permutation 的功能呢?

可以,不过很麻烦

如图,该代码来源于网络

如何使用C++的next/prev_permutation

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

如何使用C++的next/prev_permutation

如何使用C++的next/prev_permutation

6、手写prev_permutation

该代码来源于网络

如何使用C++的next/prev_permutation

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