C++ STL中提供了std::next_permutation与std::prev_permutation可以获取数字或者是字符的全排列,其中std::next_permutation提供升序、std::prev_permutation提供降序。

1.std::next_permutation函数原型

  template <class BidirectionalIterator>

  bool next_permutation (BidirectionalIterator first, BidirectionalIterator last );

  template <class BidirectionalIterator, class Compare>

  bool next_permutation (BidirectionalIterator first,BidirectionalIterator last, Compare comp);

说明:next_permutation,重新排列范围内的元素[第一,最后一个)返回按照字典序排列的下一个值较大的组合。

返回值:如果有一个更高的排列,它重新排列元素,并返回true;如果这是不可能的(因为它已经在最大可能的排列),它按升序排列重新元素,并返回false。

2.代码实例

 #include <iostream>
#include <algorithm> /// next_permutation, sort
using namespace std;
int main () {
int myints[] = {,,,};
sort (myints,myints+); do {
cout << myints[] << ' ' << myints[] << ' ' << myints[] << ' '<< myints[]<<'\n';
} while ( next_permutation(myints,myints+) ); ///获取下一个较大字典序排列 cout << "After loop: " << myints[] << ' ' << myints[] << ' ' << myints[] << ' '<< myints[] <<'\n';
return ;
}

输出:

3.算法实现原理

见:http://hi.baidu.com/bellgrade/item/70b65b8a7ea3c9c398255fd4

算法描述:

1、从尾部开始往前寻找两个相邻的元素

第1个元素i,第2个元素j(从前往后数的),且i<j

2、再从尾往前找第一个大于i的元素k。将i、k对调

3、[j,last)范围的元素置逆(颠倒排列

最新文章

  1. JavaScript 闭包深入浅出
  2. 移动销售端app的需求分析
  3. android 音乐播放器简单实现
  4. jQuery Form 表单提交插件-----formSerialize,fieldSerialize,fieldValue,resetForm,clearForm,clearFields的 应用
  5. liveusb-creator
  6. tomcat 解析(一)-文件解析
  7. threaded模式下,比prefork模式要省资源
  8. 依赖注入及AOP简述(五)——依赖注入的方式 .
  9. 离职了,在家温故而知新----1 设计模式 &amp; 开头
  10. Java连接数据库完整代码 查找和插入
  11. MVC3/4/5/6 布局页及Razor语法及Route路由配置
  12. 使用HTML5拍照
  13. day21双下方法,源码相关,异常处理
  14. python学习日记(内置函数补充)
  15. C#HTTP请求之POST请求和GET请求
  16. EXAMPLE FOR PEEWEE 多姿势使用 PEEWEE
  17. vue 自学笔记(6) axios的使用
  18. VUE基于ElementUI搭建的简易单页后台
  19. redmine生产环境搭建
  20. 2018-2019-1 20189215 《Linux内核原理与分析》第八周作业

热门文章

  1. ES6-const注意
  2. PAGELATCH_EX Contention on 2:1:103
  3. [leetcode DP]62.Unique Paths
  4. CSS基础-DAY2
  5. 01-学前入门.Net两种交换模式
  6. codevs 5971 打击犯罪
  7. 【推导】Codeforces Round #472 (rated, Div. 2, based on VK Cup 2018 Round 2) B. Mystical Mosaic
  8. MySQL规约(阿里巴巴)
  9. mysql关联查询和联合查询
  10. dwr.jar简介