c++中的全排列函数next_permutation()
全排列函数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()相关推荐
- C++:全排列函数next_permutation()和prev_permutation()
文章目录 前言 一.next_permutation()用法 简单使用 例子1 第m个最小的数字序列 自定义排序 大小写字母排序 二.prev_permutation()用法 三.STL next_p ...
- 全排列函数next_permutation
1620: 全排列 Time Limit: 1 Sec Memory Limit: 128 MB [Submit][Status][Web Board] Description 给定n个数 a[0] ...
- python中全组合函数(combinations)与全排列函数(permutations)
最近写代码时遇到排列组合问题,发现python中的itertools库用起来比较方便.itertools库中的permutations函数可以输出可迭代对象的全排列情况,而combinations函数 ...
- python中全组合函数(combinations)与全排列函数(permutations)的介绍与参数说明
概要:在平常的编程过程中,往往需要面对排列组合的应用情况,而每次自己编写相应的函数会耗费较多的时间,而python中的itertools库就为我们解决了这个小问题.itertools库中的permut ...
- [学习C++ ]C++ STL 全排列函数详解(排列组合与匹配算法)--1
一.概念 从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列.当m=n时所有的排列情况叫全排列.如果这组数有n个,那么全排列数为n!个. 比如a ...
- C++ vector 容器的全排列算法 next_permutation
问题源于我要对4个数进行排列,自己用了笨拙的穷举算法一个4重循环也得到结果,其中对有相同字母的做排序加删除相邻相等元素的处理.可是如果对100个数进行排列难道用100重循环,后来发现C++11有现成的 ...
- 全排列函数和自写排列
预告:我用两年写的新书<算法竞赛>,已于2022年2月交给清华大学出版社,预计于2022年7月出版. <算法竞赛>是一本"大全",内容覆盖"基础- ...
- 蓝桥杯——Java中的全排列算法
蓝桥杯--Java中的全排列 全排列的概念 排列 从n个数中选取m(m<=n)个数按照一定的顺序进行排成一个列,叫作从n个元素中取m个元素的一个排列.不同的顺序是一个不同的排列.从n个元素中取m ...
- 全排列函数、组合函数
1 1.求一个全排列函数:如p([1,2,3])输出: [123],[132],[213],[231],[321],[312]. 2.求一个组合函数如p([1,2,3])输出: [1],[2],[3] ...
最新文章
- 【sping揭秘】6、IOC容器之统一资源加载策略
- 伸缩门遥控器c语言程序,急求求c++编程高手,求50的阶乘,要求结果是精确的整数,打印在屏幕上。...
- 中文扩增子分析视频教程推荐
- (邓爱萍)类 对象 例题
- CRC校验和芯片ID
- 利用结构体输入输出员工信息
- Git图文教程:从零到上传GitHub项目
- 深入理解volatile
- 冰墩墩+周杰伦也救不了NFT
- linux下hg无法运行_在 Windows 里也可以访问 Linux 子系统文件了
- Oracle访问同义词连接超时,利用同义词解决oracle用户访问其它schema的对象
- java moneyutils_java中每月等额与先息后本计算
- 30余种加密编码类型的密文特征分析
- mice包--R中数据缺失值的处理
- Android开发布局 案例二
- PMP考试教材有哪些?
- 百度Apollo 2.0 车辆控制算法之LQR控制算法解读
- NTL(Number Theory Library)源码剖析(2)__基本运算
- CC++:计算某年某月的1号是星期几
- React Native学习资源汇总
热门文章
- 如果你也会C#,那不妨了解下F#(6):面向对象编程之“类”
- Asp.net 面向接口可扩展框架之类型转化基础服务
- slq2000数据库升级到sql2012
- 多种语言《九九乘法表》荟萃:C、C++、C#、JavaScript、SQL、VB、VBA、Python
- C#系统开发登录窗体在MDI窗体之前显示
- 【python opencv 计算机视觉零基础到实战】二、 opencv文件格式与摄像头读取
- 思科asa5515端口映射_Cisco ASA端口映射
- 并联系统的失效率公式推导_供暖系统水力平衡率对室温的影响
- 争时金融java_Java高并发编程基础之AQS
- python画相关性可视化图_Python可视化很简单,一文教你绘制饼图、极线图和气泡图...