我排第几个

我排第几个

时间限制:1000 ms  |  内存限制:65535 KB
难度:3
 
描述

现在有"abcdefghijkl”12个字符,将其所有的排列中按字典序排列,给出任意一种排列,说出这个排列在所有的排列中是第几小的?

 
输入
第一行有一个整数n(0<n<=10000);
随后有n行,每行是一个排列;
输出
输出一个整数m,占一行,m表示排列是第几位;
样例输入
3
abcdefghijkl
hgebkflacdji
gfkedhjblcia
样例输出
1
302715242
260726926
来源
[苗栋栋]原创
上传者

苗栋栋


 

01.#include<iostream>
02.#include<string.h>
03.using namespace std;
04.int b[]={1,1,2,6,24,120,720,5040,40320,362880,3628800,39916800};
05.int kang(char s[])
06.{
07.int num=0;
08.for(int i=0;i<12;i++)
09.{
10.int temp=0;
11.for(int j=i+1;j<12;j++)
12.{
13.if(s[j]<s[i])
14.{++temp;}
15.}
16.num+=temp*b[12-i-1];
17.}
18.return num+1;
19.}
20.int main()
21.{
22.int N;
23.char a[13];
24.cin>>N;
25.while(N--)
26.{
27.cin >> a;
28.int k=kang(a);
29.cout<<k<<endl;
30.}
31.return 0;
32.}
原文地址:https://www.cnblogs.com/leishitou/p/5436214.html