全排列 next_permutation() 函数的用法

Posted weixq351

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了全排列 next_permutation() 函数的用法相关的知识,希望对你有一定的参考价值。

在头文件<algorithm>里面有如下代码:

 

int a[];
do
{

}
while(next_permutation(a,a+n));

 

 

可产生1~n的全排列有如下代码:

 

 1 #include <stdio.h>
 2 #include <algorithm>
 3 using namespace std;
 4 int main(){
 5     int n;
 6     while(scanf("%d",&n)&&n){
 7         int a[1000];
 8         for(int i=0;i<n;i++){
 9             scanf("%d",&a[i]);
10         }
11         sort(a,a+n);
12         do{
13             for(int i=0;i<n;i++)
14                 printf("%d ",a[i]);
15             printf("
");
16         }while(next_permutation(a,a+n));
17     }
18     return 0;
19 }

 

 

例如输入

3

1 0 2

如果有sort()

输出为

0 1 2
0 2 1
1 0 2
1 2 0
2 0 1
2 1 0

若无

则输出为

1 0 2
1 2 0
2 0 1
2 1 0

发现函数next_permutation()是按照字典序产生排列的,并且是从数组中当前的字典序开始依次增大直至到最大字典序,在ACM International Collegiate Programming Contest, Egyptian Collegiate Programming Contest (2015)  Arab Academy for Science and Technology - Alexandria, November 6th, 2015 A题就可以采用next_permutation()。

 

原博客:https://www.cnblogs.com/My-Sunshine/p/4985366.html

 

 

以上是关于全排列 next_permutation() 函数的用法的主要内容,如果未能解决你的问题,请参考以下文章

STL中next_permutation函数的应用-全排列(C++)

STL中next_permutation函数的应用-全排列(C++)

STL中next_permutation函数的应用-全排列(C++)

next_permutation函数(全排列)

STL之next_permutation函数对各种类型的全排列实例

全排列问题(next_permutation函数)