全排列函数next_permutation()

prev_permutation函数(按降序排序)

计算序列全排列的函数:next_permutation(start,end),此函数求的是当前排列的下一个排列,这里的“下一个”,我们可以把它理解为序列的字典序的前后

此外,还应该注意的是,next_permutation()在使用前需要对欲排列数组按升序排序,否则只能找出该序列之后的全排列数。
next_permutation函数详解:

组合数学中经常用到排列,这里介绍一个计算序列全排列的函数:next_permutation(start,end),和prev_permutation(start,end)。这两个函数作用是一样的,区别就在于前者求的是当前排列的下一个排列,后一个求的是当前排列的上一个排列。至于这里的“前一个”和“后一个”,我们可以把它理解为序列的字典序的前后,严格来讲,就是对于当前序列pn,他的下一个序列pn+1满足:不存在另外的序列pm,使pn<pm<pn+1.

对于next_permutation函数,其函数原型为:

 #include <algorithm>bool next_permutation(iterator start,iterator end)

当当前序列不存在下一个排列时,函数返回false,否则返回true

#include <iostream>
#include <algorithm>
using namespace std; int main()
{int a[3]={1,2,3};while(next_permutation(a,a+3)){cout<<a[0]<<" "<<a[1]<<" "<<a[2]<<endl;}return 0;
}


可能你会发现并没有输出1 2 3,这就可以用它的概念(性质)来回答了。

如果想要全部输出,可以考虑用do语句

#include <iostream>
#include <algorithm>
using namespace std;
int main()
{int num[3]={1,2,3};do{cout<<num[0]<<" "<<num[1]<<" "<<num[2]<<endl;}while(next_permutation(num,num+3));return 0;
}


参考原文全排列函数next_permutation()
prev_permutation函数

#include <iostream>
#include <algorithm>
using namespace std;
int main()
{int num[3]={2,1,3};do{cout<<num[0]<<" "<<num[1]<<" "<<num[2]<<endl;}while(prev_permutation(num,num+3));return 0;
}

c++中的全排列函数next_permutation()相关推荐

  1. C++:全排列函数next_permutation()和prev_permutation()

    文章目录 前言 一.next_permutation()用法 简单使用 例子1 第m个最小的数字序列 自定义排序 大小写字母排序 二.prev_permutation()用法 三.STL next_p ...

  2. 全排列函数next_permutation

    1620: 全排列 Time Limit: 1 Sec Memory Limit: 128 MB [Submit][Status][Web Board] Description 给定n个数 a[0] ...

  3. python中全组合函数(combinations)与全排列函数(permutations)

    最近写代码时遇到排列组合问题,发现python中的itertools库用起来比较方便.itertools库中的permutations函数可以输出可迭代对象的全排列情况,而combinations函数 ...

  4. python中全组合函数(combinations)与全排列函数(permutations)的介绍与参数说明

    概要:在平常的编程过程中,往往需要面对排列组合的应用情况,而每次自己编写相应的函数会耗费较多的时间,而python中的itertools库就为我们解决了这个小问题.itertools库中的permut ...

  5. [学习C++ ]C++ STL 全排列函数详解(排列组合与匹配算法)--1

    一.概念 从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列.当m=n时所有的排列情况叫全排列.如果这组数有n个,那么全排列数为n!个. 比如a ...

  6. C++ vector 容器的全排列算法 next_permutation

    问题源于我要对4个数进行排列,自己用了笨拙的穷举算法一个4重循环也得到结果,其中对有相同字母的做排序加删除相邻相等元素的处理.可是如果对100个数进行排列难道用100重循环,后来发现C++11有现成的 ...

  7. 全排列函数和自写排列

    预告:我用两年写的新书<算法竞赛>,已于2022年2月交给清华大学出版社,预计于2022年7月出版. <算法竞赛>是一本"大全",内容覆盖"基础- ...

  8. 蓝桥杯——Java中的全排列算法

    蓝桥杯--Java中的全排列 全排列的概念 排列 从n个数中选取m(m<=n)个数按照一定的顺序进行排成一个列,叫作从n个元素中取m个元素的一个排列.不同的顺序是一个不同的排列.从n个元素中取m ...

  9. 全排列函数、组合函数

    1 1.求一个全排列函数:如p([1,2,3])输出: [123],[132],[213],[231],[321],[312]. 2.求一个组合函数如p([1,2,3])输出: [1],[2],[3] ...

最新文章

  1. 【sping揭秘】6、IOC容器之统一资源加载策略
  2. 伸缩门遥控器c语言程序,急求求c++编程高手,求50的阶乘,要求结果是精确的整数,打印在屏幕上。...
  3. 中文扩增子分析视频教程推荐
  4. (邓爱萍)类 对象 例题
  5. CRC校验和芯片ID
  6. 利用结构体输入输出员工信息
  7. Git图文教程:从零到上传GitHub项目
  8. 深入理解volatile
  9. 冰墩墩+周杰伦也救不了NFT
  10. linux下hg无法运行_在 Windows 里也可以访问 Linux 子系统文件了
  11. Oracle访问同义词连接超时,利用同义词解决oracle用户访问其它schema的对象
  12. java moneyutils_java中每月等额与先息后本计算
  13. 30余种加密编码类型的密文特征分析
  14. mice包--R中数据缺失值的处理
  15. Android开发布局 案例二
  16. PMP考试教材有哪些?
  17. 百度Apollo 2.0 车辆控制算法之LQR控制算法解读
  18. NTL(Number Theory Library)源码剖析(2)__基本运算
  19. CC++:计算某年某月的1号是星期几
  20. React Native学习资源汇总

热门文章

  1. 如果你也会C#,那不妨了解下F#(6):面向对象编程之“类”
  2. Asp.net 面向接口可扩展框架之类型转化基础服务
  3. slq2000数据库升级到sql2012
  4. 多种语言《九九乘法表》荟萃:C、C++、C#、JavaScript、SQL、VB、VBA、Python
  5. C#系统开发登录窗体在MDI窗体之前显示
  6. 【python opencv 计算机视觉零基础到实战】二、 opencv文件格式与摄像头读取
  7. 思科asa5515端口映射_Cisco ASA端口映射
  8. 并联系统的失效率公式推导_供暖系统水力平衡率对室温的影响
  9. 争时金融java_Java高并发编程基础之AQS
  10. python画相关性可视化图_Python可视化很简单,一文教你绘制饼图、极线图和气泡图...