码迷,mamicode.com
首页 > 其他好文 > 详细

next_permutation用法

时间:2019-12-05 21:52:33      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:break   out   就是   str   namespace   stream   code   ++   int   

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用法

标签:break   out   就是   str   namespace   stream   code   ++   int   

原文地址:https://www.cnblogs.com/-Ackerman/p/11991938.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!