2868: 【例57.2】 上一个排列
内存限制:64 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:2
解决:2
题目描述
地球人都知道,从 $1$ 开始到 $n$ ($1≤n≤9$) 这 $n$ 个数字一共可以组成 $n!$ 个不同的排列。现在把这 $n$ 个排列按字典序从小到大排序,给出其中一个排列,求该排列的上一个排列。
输入
第一行一个整数 $n$,表示排列的长度。
第二行 $n$ 个用空格分隔的整数,为 $1$ 到 $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;
}