在c++的STL中有函数可以直接对数组元素进行全排列,即next_permutationpre_permutation,这两个函数都可以实现全排列,只是排列的顺序不同,next_permutation作用为向后排序,而pre_permutation作用为向前排序。

需要头文件#include <algorithm>

示例

#include <iostream>
#include <algorithm>
using namespace std;int main() {int nums[10];for( int i = 0; i < 10; i++ ) {nums[i] = i + 1;}int n;cin >> n;do {for( int i = 0; i < n; i++ ) {cout << nums[i];}cout << endl;} while( next_permutation( nums, nums+n ) );return 0;
}

运行结果:

若改为pre_permutation:

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

#include <iostream>
#include <algorithm>
using namespace std;int main() {int nums[3] = {1, 2, 3}; //注意数据顺序的差异do {for( int i = 0; i < 3; i++ ) {cout << nums[i];}cout << endl;} while( prev_permutation( nums, nums+3 ) );return 0;
}

可见两者的差别为排列顺序不同。

练习

题目链接: http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=366

代码:


#include <iostream>
#include <algorithm>
#include <string>
#include <set>
using namespace std;int main() {int nums[10];for( int i = 0; i < 10; i++ ) {nums[i] = i + 1;}int t, n;cin >> t;while( t-- ) {cin >> n;do {for( int i = 0; i < n; i++ ) {cout << nums[i];}cout << endl;} while( next_permutation( nums, nums+n ) );}return 0;
}        

c++ STL 全排列相关推荐

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

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

  2. 洛谷 P1618 STL全排列方法

    洛谷 P1618 & STL全排列方法 今天在做洛谷上暴力专项训练,在解P1618题目的过程中发现了STL中全排列在解题中的妙用,特在此分享. 首先让我们先来看一下这道题: P1618三连击( ...

  3. poj 1833 排列 STL 全排列公式

    排列 Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 15173   Accepted: 6148 Description 题 ...

  4. 杭电的题,输出格式卡的很严。HDU 1716 排列2

    题很简单,一开始写代码,是用整数的格式写的,怎么跑都不对,就以为算法错了,去看大佬们的算法STL全排列:next_permutation(); 又双叒叕写了好几遍,PE了将近次,直到跑了大佬代码发现, ...

  5. leetcode/nowcoder-huawei-5-排列组合

    5.排列组合 面试题08.08. 有重复字符串的排列组合 描述 有重复字符串的排列组合.编写一种方法,计算某字符串的所有排列组合.示例1:输入:S = "qqe"输出:[" ...

  6. hrbust mengxiang000000 题册

    原博客 ------------------------------------------------------------------------------------------------ ...

  7. 使用STL的next_permutation函数生成全排列(C++)

    下午研究了一下全排列算法,然后发现C++的STL有一个函数可以方便地生成全排列,这就是next_permutation 在C++ Reference中查看了一下next_permutation的函数声 ...

  8. 全排列算法解析(视频+详解+代码+STL)

    全排列生成算法 刚开始自学的时候搜了两三个scdn中关于讲解全排列问题的博客,但是我理解能力比较差还是没有完全理解 ,后来就在网上搜索了视频才完全弄懂,现在把我理解的分享给你们. 学习视频:http: ...

  9. 用康托展开实现全排列(STL、itertools)

    康拓展开: $X=a_n*(n-1)!+a_{n-1}*(n-2)!+\ldots +a_2*1!+a_1*0!$ X=an*(n-1)!+an-1*(n-2)!+...+ai*(i-1)!+...+ ...

最新文章

  1. 推荐阅读的多核编程技术书籍
  2. Erlang基础学习总结2
  3. 图文:详解数据库Oracle 11g的基本安装
  4. 【牛客 - 330F】Applese 的QQ群(拓扑排序,二分)
  5. 软件测试—软件测试基础知识—测试用例设计的方法之场景法、正交试验法和错误推断法
  6. 【大数据部落】R语言犯罪率回归模型报告Regression model on crimerate report
  7. 分布式存储 HDFS原理
  8. 太可爱啦!程序员把电脑病毒当宠物养
  9. 书单:交互设计书籍推荐
  10. hapi.js_使用Hapi.js制作RESTful API
  11. 永恒之蓝(勒索病毒)
  12. ios下overflow:scoll中卡顿问题
  13. 奥升德推出Acteev Protect™抗菌技术
  14. 基于c#的区块链编程_3.区块链 · C#区块链编程入门教程-巴比特图书
  15. 感性认识:计算机基本工作原理
  16. host文件是干嘛的?有什么用?
  17. 影院活动管理系统 项目测试与部署
  18. Android系统架构与分层
  19. 优酷K1 YK-K1 开机主动访问的域名
  20. 浅析SATA Physical Layer物理层OOB信号

热门文章

  1. Jquery获取服务器端控件ID的方法
  2. 【HTML】前端性能优化之CDN和WPO的比较
  3. ES6中块级作用域下的函数声明
  4. POJ 1258 Agri-Net (最小生成树)
  5. yum 和 rpm安装mysql彻底删除
  6. 【Linux学习篇】This virtual machine is configured for 64-bit guest operating systems.……
  7. ForeignKey和ManyToManyField的限制关系
  8. ASP.NET Session详解
  9. 飞信SDK内容【转载】
  10. EMF的一些总结(2)——关于EMF的序列化