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()相关推荐

  1. STL经典算法集锦之排列(next_permutation/prev_permutation

    STL经典算法集锦之排列(next_permutation/prev_permutation) 来自:CSDN博客推荐文章 | 时间:2012-05-07 14:54:09 原文链接: http:// ...

  2. 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 ...

  3. [技术] OIer的C++标准库 : STL入门

    注: 本文主要摘取STL在OI中的常用技巧应用, 所以可能会重点说明容器部分和算法部分, 且不会讨论所有支持的函数/操作并主要讨论 C++11 前支持的特性. 如果需要详细完整的介绍请自行查阅标准文档 ...

  4. C++STL标准库学习总结/索引/学习建议

    前言: 如果刚刚开始学习STL标准库,不知道从哪里入手学习的话,建议去中国大学mooc平台,先学习北京大学郭炜老师的<程序设计与算法(一)C语言程序设计>(https://www.icou ...

  5. C++拾取——使用stl标准库实现排序算法及评测

    今天看了一篇文章,讲各种语言的优势和劣势.其中一个观点:haskell非常适合写算法,因为使用者不用去关心具体的计算机实现,而只要关注于操作语义.这让它在专心研究算法的人中非常受欢迎.所以很多时候,语 ...

  6. C++标准库中各种排序归纳

    一.简介 所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作.我们在编程过程中会经常接触到排序,比如游戏中的排行榜等.C++标准库中提供了各种不同的排序算法,这篇博 ...

  7. C++知识点25——使用C++标准库(容器适配器stack、queue、priority_queue)

    除了vector,list,deque等常用的容器,还有根据这些常用的容器进行改造来满足特殊要求的容器,这些特殊容器的行为和常用容器很相近,也称为容器适配器. 常用的容器适配器有三个,分别是stack ...

  8. Python 3标准库,[美] 道格·赫尔曼(Doug Hellmann)

    在本书中,你会看到用来处理文本.数据类型.算法.数学计算.文件系统.网络通信.Internet.XML.Email.加密.并发性.运行时和语言服务等各个方面的实用代码和解决方案.在内容安排上,每一节都 ...

  9. 标准模板库之容器-《C++标准库(第二版)》读书笔记

    写在前面:本文是阅读<C++标准库(第二版)>的读书笔记. 文章目录 6.1 STL组件(Component) 6.2 容器(Container) 6.2.1 序列式容器(Sequence ...

最新文章

  1. 理解OpenGL中帧缓存FrameBuffer 渲染缓存RenderingBuffer
  2. BIOS英文报错详解;你虽会做系统,但你会看BIOS英文报错吗,仅供大家参考学习。...
  3. AC日记——丑数 codevs 1246
  4. linux dd devzero,makefile中ifeq与ifneq dev/null和dev/zero简介 dd命令
  5. 函数最值题目及答案_呆哥数学每日一题 ——多元函数求最值
  6. c语言用什么操作系统,用C语言写关于操作系统的一个问题。
  7. SICP习题解答2.22
  8. Nginx重启时丢失nginx.pid文件
  9. 个人关于学习的一些总结
  10. php文本框代码_php怎么用代码给文本框输入值
  11. Rust FFI 编程 - libc crate
  12. PS不能直接拖入图片的解决办法
  13. angular2项目里使用 Spin(加载中)
  14. 语音转写基于科大讯飞WebApi接口的安卓实现--上传录音音频翻译成文字
  15. 什么是5G?它能为我们带来什么样的便利?思维导图《5G时代》给你新认识
  16. HashMap、ConcurrentHashMap源码解读(JDK7/8)
  17. 纯CSS实现粉红爱心动画
  18. Python编程:从入门到实践-第七章:用户输入和while循环(语法)
  19. Three.js中的3D文字效果
  20. mc服务器常用指令_mc服务器常用指令

热门文章

  1. 重磅!滴滴跨端框架Chameleon 1.0正式发布(学不动啦...)
  2. 2022-2028全球与中国无线机械键盘市场现状及未来发展趋势
  3. 【www.aixin365.cn】爱心捐助网是中国第一家网上公益救助网站
  4. C#高仿QQ2014
  5. linux系统不能用投影仪,linux连接投影机方法介绍
  6. [每日一题][HXBCTF 2021]easywill
  7. ACP敏捷认证详细介绍,不懂的看过来
  8. 华三云服务器linux,华三云:做一朵场景化和个性化的云
  9. 腾讯云服务器与虚拟机搭建主从分离数据库
  10. SQLite Expert