2868: 【例57.2】 上一个排列

内存限制:64 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:2 解决:2

题目描述

地球人都知道,从 $1$ 开始到 $n$ ($1≤n≤9$) 这 $n$ 个数字一共可以组成 $n!$ 个不同的排列。现在把这 $n$ 个排列按字典序从小到大排序,给出其中一个排列,求该排列的上一个排列。

输入

第一行一个整数 $n$,表示排列的长度。
第二行 $n$ 个用空格分隔的整数,为 $1$ 到 $n$ 组成的某个排列。

输出

如果上一个排列存在,则输出;否则输出"ERROR"

样例输入 复制

4
2 1 3 4

样例输出 复制

1 4 3 2

提示

#include <bits/stdc++.h>
using namespace std;
int n,a[10];
int main(){
    cin>>n;
    for (int i=1;i<=n;++i)
        cin>>a[i];
        if (prev_permutation(a+1,a+1+n))
        {
            for (int i=1;i<=n;++i)
            printf("%d ",a[i]);
            putchar('\n');
        }
        else
            printf("ERROR\n");
    return 0;
}