hdu_1027_Ignatius and the Princess II(全排列 stl next_permutation()的使用)

 1 #include<iostream>
 2 #include<algorithm> //注意头文件
 3 using namespace std;
 4 int main(){
 5     int a[1001];
 6     int n,m;
 7     while(cin>>n>>m){
 8         for(int i=1;i<=n;i++)  //生成一个字典序最小的序列
 9         a[i]=i;
10         int b=1;
11         do{
12             if(b==m)
13             break;
14             b++;
15         }while(next_permutation(a+1,a+n+1));  //此处需注意 第一个是a+1,最后一个是a+n  函数next_permutation()的排列范围是[first,last)
16         for(int i=1;i<n;i++)
17         cout<<a[i]<<" ";
18         cout<<a[n]<<endl;  //注意输出格式
19     }
20     return 0;
21 } 

注:

next_permutation():STL提供求下一个排列组合的函数。

定义有两种形式:

  1. bool next_permutation(   BidirectionalIterator _First,   BidirectionalIterator _Last  );
  2. bool next_permutation(   BidirectionalIterator _First,    BidirectionalIterator _Last,   BinaryPredicate _Comp  );

返回值:如果没有下一个排列组合,返回false,否则返回true。每执行该函数一次,就会把新的排列放到原来的空间里。

注意其 排列范围是[first,last) 。

posted @ 2020-05-08 18:24  一只蒟蒻也有大佬梦  阅读(115)  评论(0编辑  收藏  举报