next_permutation / prev_permutation 用法

给定输入的序列 a(整数即可,其他无限制条件),next_permutation(a + 1, a + n + 1) 可以求出 a 的关于值的下一个排列,prev_permutation(a + 1, a + n + 1) 可以求出 a 的关于值的上一个排列

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N = 10005;
int n, m;
int a[N];

int main() {
    scanf("%d%d", &n, &m);
    for(int i = 1; i <= n; i++) {
        scanf("%d", &a[i]);
    }

    for(int i = 1; i <= m; i++) next_permutation(a + 1, a + n + 1);
    for(int i = 1; i <= n; i++) {
        printf("%d ", a[i]);
    }puts("");

    for(int i = 1; i <= m; i++) prev_permutation(a + 1, a + n + 1);
    for(int i = 1; i <= n; i++) {
        printf("%d ", a[i]);
    }puts("");
    
    system("pause");
    return 0;    
}

例题:普及组 火星人

想了好久,以为都需要dfs了,结果用STL就能解决了

posted @ 2022-10-25 12:23  starlightlmy  阅读(56)  评论(0)    收藏  举报