使用 next_permutation() 获取本数组排列的下一个排列(更大)

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 
*/

上一篇:壹心以益的信息化之路 #科技有温度#


下一篇:试题 算法训练 星际交流