题目描述
前传:详见洛谷P2525
Uim成功地按照顺序将礼物送到了N个妹子的手里并维持她们的和谐。
Uim现在想知道,他最终选择的顺序是所有给N个妹子送礼顺序中、字典序第几小的。
输入格式
第一行一个整数N,表示有N个数。
第二行一个整数X,表示给出的排列。
输出格式
一个整数,表示是第几小的字典序。
输入输出样例‘
输入
3
231
输出
4
#include<cstdio>
#include<algorithm>
using namespace std;
int a[10005],b[10000];
bool check(int *a,int *b,int n){
for(int i=0;i<n;i++){
if(a[i]!=b[i])return false;
}
return true;
}
int main(){
int n;
scanf("%d",&n);
char s[10];
for(int i=0;i<n;i++){
scanf("%s",s);//直接整数输入好像会超时。。
}
for(int i=0;i<n;i++){
a[i]=s[i]-'0';
b[i]=i+1;
}
int ans=0;
while(!check(a,b,n)){
next_permutation(b,b+n);
ans++;
}
printf("%d\n",ans+1);
return 0;
}