next_permutation (全排列函数
作者:
我以为我们是朋友呢
,
2022-05-03 15:22:25
,
所有人可见
,
阅读 177
next_permutation是一个原地算法(会直接改变这个集合,而不是返回一个集合),它对一个可以遍历的集合(如string,如vector),将迭代器范围 [first, last] 的排列 排列到下一个排列(第一个是名词,第二个是动词,第三个是名词),其中所有排列的集合默认按照operator < 或者 字典序 或者 按照输入到第三个参数 comp 的排列方法排列。如果存在这样的“下一个排列”,返回true并执行排列,否则返回false。
例题
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
#include<string>
#include<cmath>
using namespace std;
typedef long long LL;
const int N=1e4+10;
int a[N];
int main()
{
int n,m;
cin>>n>>m;
for (int i=0;i<n;i++)
cin>>a[i];
for (int i=0;i<m;i++)
next_permutation(a,a+n);
for (int i=0;i<n;i++)
cout<<a[i]<<' ';
return 0;
}