题目描述
情人节到了,Uim打算给他的后宫们准备情人节礼物。UIm一共有N(1<=N<=9)个后宫妹子(现充去死 挫骨扬灰!)。
为了维护他的后宫的稳定。他通过编程,得出了一个送礼物的最佳顺序。这个我们管不着。
然而他认为,如果什么事情做得太圆满不是什么好事。于是他希望得到 原定顺序 的 前一个字典序的序列。
输入格式
第一行一个整数N
第二行N个整数,表示原定排列
输出格式
前一个排列
输入输出样例
输入 #1复制
3
1 3 2
输出 #1复制
1 2 3
说明/提示
若当前排列已经是第一个,则输出'ERROR'(引号不输出)
思路:直接使用prev_premutation(a,a+n)求前一个·排列
补充://求下一个排列
for(int i=1;i<=n;i++){
a[i]=i;
}
do{
for(int i=1;i<n;i++){
cout<<a[i]<<" ";
}
cout<<a[n]<<endl;
}while(next_permutation(a+1,a+n+1));
代码如下:
#include <bits/stdc++.h>
using namespace std;
int a[100],n;
int main(){
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
}
if(prev_permutation(a,a+n)){
for(int i=0;i<n;i++){
cout<<a[i]<<" ";
}
}
else cout<<"ERROR";
return 0;
}