C++标准库---排列元素next_permutation()prev_permutation()
bool next_permutation(beg,end)
bool prev_permutation(beg,end)
next_permutation()会改变区间[beg,end)内的元素次序,使它们符合“下一个排列次序”;
prev_permutation()会改变区间[beg,end)内的元素次序,使它们符合“上一个排列次序”;
如果元素得以排列成(就字典顺序而言的)"正规"次序,则两个算法都返回true。所谓正规次序,对next_permutation()而言为升序,对perv_permutation()而言为降序。因此,如果要走遍所有排列,你必须先将所有元素(按升序或降序)排序,然后开始以循环方式调用next_permutation或prev_permutation,直到算法返回false;
复杂度:线性
代码示例:
#include"fuzhu.h"using namespace std;int main()
{vector<int> coll;INSERT_ELEMENTS(coll,1,3);PRINT_ELEMENTS(coll,"on entry: ");//1 2 3while(next_permutation(coll.begin(),coll.end()))//从小到大,输出到3 2 1 后,再次执行next_permutation()后为false,执行后为 1 2 3{PRINT_ELEMENTS(coll," ");}PRINT_ELEMENTS(coll,"afterward: ");//1 2 3while(prev_permutation(coll.begin(),coll.end()))//未输出,因为1 2 3的上一个序列为3 2 1,不满足降序,虽然返回为flase,但是序列会变为3 2 1{PRINT_ELEMENTS(coll," ");}PRINT_ELEMENTS(coll,"now: ");//3 2 1while(prev_permutation(coll.begin(),coll.end()))//从大到小{PRINT_ELEMENTS(coll);}PRINT_ELEMENTS(coll,"afterward: ");//3 2 1system("pause");return 0;
}
运行结果:
C++标准库---排列元素next_permutation()prev_permutation()相关推荐
- STL经典算法集锦之排列(next_permutation/prev_permutation
STL经典算法集锦之排列(next_permutation/prev_permutation) 来自:CSDN博客推荐文章 | 时间:2012-05-07 14:54:09 原文链接: http:// ...
- 2 C++标准库(1- IO库、顺序容器和泛型算法)
2-1 C++标准:IO库.顺序容器和泛型算法 8 IO库 8.1 IO类 8.2 文件输入输出 8.2.1 使用文件流对象 8.2.2 文件模式 8.3 string流 8.3.1 使用istrin ...
- [技术] OIer的C++标准库 : STL入门
注: 本文主要摘取STL在OI中的常用技巧应用, 所以可能会重点说明容器部分和算法部分, 且不会讨论所有支持的函数/操作并主要讨论 C++11 前支持的特性. 如果需要详细完整的介绍请自行查阅标准文档 ...
- C++STL标准库学习总结/索引/学习建议
前言: 如果刚刚开始学习STL标准库,不知道从哪里入手学习的话,建议去中国大学mooc平台,先学习北京大学郭炜老师的<程序设计与算法(一)C语言程序设计>(https://www.icou ...
- C++拾取——使用stl标准库实现排序算法及评测
今天看了一篇文章,讲各种语言的优势和劣势.其中一个观点:haskell非常适合写算法,因为使用者不用去关心具体的计算机实现,而只要关注于操作语义.这让它在专心研究算法的人中非常受欢迎.所以很多时候,语 ...
- C++标准库中各种排序归纳
一.简介 所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作.我们在编程过程中会经常接触到排序,比如游戏中的排行榜等.C++标准库中提供了各种不同的排序算法,这篇博 ...
- C++知识点25——使用C++标准库(容器适配器stack、queue、priority_queue)
除了vector,list,deque等常用的容器,还有根据这些常用的容器进行改造来满足特殊要求的容器,这些特殊容器的行为和常用容器很相近,也称为容器适配器. 常用的容器适配器有三个,分别是stack ...
- Python 3标准库,[美] 道格·赫尔曼(Doug Hellmann)
在本书中,你会看到用来处理文本.数据类型.算法.数学计算.文件系统.网络通信.Internet.XML.Email.加密.并发性.运行时和语言服务等各个方面的实用代码和解决方案.在内容安排上,每一节都 ...
- 标准模板库之容器-《C++标准库(第二版)》读书笔记
写在前面:本文是阅读<C++标准库(第二版)>的读书笔记. 文章目录 6.1 STL组件(Component) 6.2 容器(Container) 6.2.1 序列式容器(Sequence ...
最新文章
- 理解OpenGL中帧缓存FrameBuffer 渲染缓存RenderingBuffer
- BIOS英文报错详解;你虽会做系统,但你会看BIOS英文报错吗,仅供大家参考学习。...
- AC日记——丑数 codevs 1246
- linux dd devzero,makefile中ifeq与ifneq dev/null和dev/zero简介 dd命令
- 函数最值题目及答案_呆哥数学每日一题 ——多元函数求最值
- c语言用什么操作系统,用C语言写关于操作系统的一个问题。
- SICP习题解答2.22
- Nginx重启时丢失nginx.pid文件
- 个人关于学习的一些总结
- php文本框代码_php怎么用代码给文本框输入值
- Rust FFI 编程 - libc crate
- PS不能直接拖入图片的解决办法
- angular2项目里使用 Spin(加载中)
- 语音转写基于科大讯飞WebApi接口的安卓实现--上传录音音频翻译成文字
- 什么是5G?它能为我们带来什么样的便利?思维导图《5G时代》给你新认识
- HashMap、ConcurrentHashMap源码解读(JDK7/8)
- 纯CSS实现粉红爱心动画
- Python编程:从入门到实践-第七章:用户输入和while循环(语法)
- Three.js中的3D文字效果
- mc服务器常用指令_mc服务器常用指令
热门文章
- 重磅!滴滴跨端框架Chameleon 1.0正式发布(学不动啦...)
- 2022-2028全球与中国无线机械键盘市场现状及未来发展趋势
- 【www.aixin365.cn】爱心捐助网是中国第一家网上公益救助网站
- C#高仿QQ2014
- linux系统不能用投影仪,linux连接投影机方法介绍
- [每日一题][HXBCTF 2021]easywill
- ACP敏捷认证详细介绍,不懂的看过来
- 华三云服务器linux,华三云:做一朵场景化和个性化的云
- 腾讯云服务器与虚拟机搭建主从分离数据库
- SQLite Expert