我排第几个

来源:互联网 发布:智能数据分析 编辑:程序博客网 时间:2024/04/27 13:37

我排第几个

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

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

输入
第一行有一个整数n(0<n<=10000);
随后有n行,每行是一个排列;
输出
输出一个整数m,占一行,m表示排列是第几位;
样例输入
3abcdefghijklhgebkflacdjigfkedhjblcia
样例输出
1302715242260726926

import java.util.Scanner;      public class Main {    private static int fun(String string,int temp) {int sum=0;char arr[]=string.toCharArray();for(int i=temp+1;i<string.length();i++){if(arr[i]<arr[temp]){sum++;}}return sum;}    public static void main(String[] args) {          Scanner scanner=new Scanner(System.in);        int time=scanner.nextInt();        String cc=scanner.nextLine();        while(time--!=0)        {        String string=scanner.nextLine();        int sum=0;        for(int i=0;i<string.length();i++)        {        int num1=fun(string,i);//找比它小的字母的个数        int temp=string.length()-i-1;//求它后面的字母的个数        int num2=1;        for(int j=1;j<=temp;j++)        {        num2*=j;        }        sum=sum+num1*num2;        }        System.out.println(sum+1);        }    }    }  


1 0
原创粉丝点击