1.使用 next_permutation()函数获取 给定元素排列的下一个(更大)
#include <bits/stdc++.h>
using namespace std;
int a[100000];
int main(){
int n,m;
cin >> n >> m;
for(int i=1;i<=n;++i)
cin >> a[i];
for(int i=1;i<=m;++i){
next_permutation(a+1,a+n+1);
cout <<"第"<< i << "次排列:" ;
for(int i=1;i<=n;++i)
cout << a[i] <<" ";
cout << endl;
}
return 0;
}
/*
输入:
5 3
1 2 3 4 5
结果:
第1次排列:1 2 3 5 4
第2次排列:1 2 4 3 5
第3次排列:1 2 4 5 3
*/
2.使用prev_permutation()函数 获取 给定元素排列的下一个(更小),如果给定是最小排列,下一个会是最大的排列。
#include <bits/stdc++.h>
using namespace std;
int a[100000];
int main(){
int n,m;
cin >> n >> m;
for(int i=1;i<=n;++i)
cin >> a[i];
for(int i=1;i<=m;++i){
prev_permutation(a+1,a+n+1);
cout <<"第"<< i << "次排列:" ;
for(int i=1;i<=n;++i)
cout << a[i] <<" ";
cout << endl;
}
return 0;
}
/*
输入:
5 3
1 2 3 4 5
结果:
第1次排列:5 4 3 2 1
第2次排列:5 4 3 1 2
第3次排列:5 4 2 3 1
*/