STL函数next_permutation简介

基本介绍:next_permutation是C++的STL库中的一个函数,这个函数可以求解一个数组中基于现有排列的下一个排列,而调用该函数之后生成的排列是上一个排列 基于字典序产生的下一个排列。(如果觉得拗口可以看下面程序的运行结果,一看就懂)

使用方法:next_permutation拥有两个参数,分别是指向数组开头的指针和指向数组结尾的指针。

返回值:如果可以生成下一个排列,即下一个排列存在时返回真,否则返回假。

 1 #include <cstdio>
 2 #include <algorithm>//包含next_permutation()的头文件
 3 
 4 using namespace std;
 5 
 6 int main()
 7 {
 8     int n,p[10];
 9     scanf("%d", &n);
10     for(int i = 0; i < n; i++) scanf("%d", &p[i]);
11     sort(p, p+n);
12     do{
13         for(int i = 0; i < n; i++) printf("%d", p[i]);
14         printf("\n");
15     }while(next_permutation(p, p+n));
16     return 0;
17 } 

这里只演示了整数数组的排列,事实上字符数组也可以进行排列。

下面是程序运行结果:

4
1 2 3 4
1234
1243
1324
1342
1423
1432
2134
2143
2314
2341
2413
2431
3124
3142
3214
3241
3412
3421
4123
4132
4213
4231
4312
4321

【参考书目】《算法竞赛入门经典》

posted @ 2020-08-11 23:46  江南湖西北  阅读(463)  评论(0编辑  收藏  举报