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用法的主要内容,如果未能解决你的问题,请参考以下文章
STL中关于全排列next_permutation以及prev_permutation的用法