我排第几个

来源:互联网 发布:鞋子质量好的淘宝店 编辑:程序博客网 时间:2024/04/27 16:46

我排第几个

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

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

输入
第一行有一个整数n(0<n<=10000);
随后有n行,每行是一个排列;
输出
输出一个整数m,占一行,m表示排列是第几位;
样例输入
3abcdefghijklhgebkflacdjigfkedhjblcia
样例输出
1302715242260726926
来源
[苗栋栋]原创
上传者
苗栋栋
这个是著名的康托展开!关于康托展开点击打开链接
#include<stdio.h>
#include<string.h>int jicheng(int n){    int sum=1;    for(int i=1;i<=n;i++)    {        sum*=i;    }    return sum;}int main(){    int times,stl,i,flag,j,sum;    char s[18];    scanf("%d\n",×);    while(times--)    {        sum=0;        gets(s);        for(i=0;i<12;i++)        {            flag=0;            for(j=i+1;j<12;j++)            {                if(s[j]<s[i])                {                    flag++;                }            }            sum+=flag*jicheng(12-i-1);        }        printf("%d\n",sum+1);    }}


0 0
原创粉丝点击