next_permutation用法

Posted -ackerman

tags:

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

next_permutation就是按照字典序排列得到所有的排列组合!

 

例如

我们需要输出{ 1 , 2 , 3 , 4 } 的全排列

 1 #include<iostream>
 2 #include<algorithm>
 3 using namespace std;
 4 int main()
 5 {
 6     int ans[4]={1,2,3,4};
 7     sort(ans,ans+4);    /* 这个sort可以不用,因为{1,2,3,4}已经排好序*/
 8     do                             /*注意这步,如果是while循环,则需要提前输出*/
 9     {
10         for(int i=0;i<4;++i)
11             cout<<ans[i]<<" ";
12         cout<<endl;
13     }while(next_permutation(ans,ans+4));
14     return 0;
15 }

 

算出序列的第n个排列(注意这里从0开始计数)

 

 1 #include<iostream>
 2 #include<algorithm>
 3 using namespace std;
 4 int main()
 5 {
 6     int ans[7]={1,2,3,4,5,6,7};
 7     sort(ans,ans+7);  /* 同上可以不用sort */
 8     int n=0; 
 9     do                             //注意这步,如果是while循环,则需要提前输出
10     {
11         if(n == 1654)
12         {
13              for(int i=0;i<7;++i)
14             cout<<ans[i];
15             cout<<endl;
16             break;
17         }
18         n++;
19      }while(next_permutation(ans,ans+7));
20     return 0;
21 }

 

给你一个序列a和序列b,反推序列b是序列a的第几个排列


也是和上面一样,就是每次得到a的一个排列的时候去和b进行比对,并且用一个cnt计数,如果一样就输出cnt。

 

 

 

 

 

 

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

next_permutation用法

STL中关于全排列next_permutation以及prev_permutation的用法

排列组合函数next_permutation()

[OI - STL] next_permutation( ) & prev_permutation( )函数

next_permutation(start,end)

c_cpp 加载源图像固定用法(代码片段,不全)