康托展开
public class main
{
public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("请输入正整数"); Scanner sc=new Scanner(System.in); int n=sc.nextInt(); sc.nextLine(); for(int i=0;i<n;i++) { String s1="abcdefghijkl"; char[] arr1=s1.toCharArray(); System.out.println("请输入字符串"); String s2=sc.nextLine(); //System.out.println(s2); char[] arr2=s2.toCharArray(); int rank=0; for(int j=0;j<12;j++) { int index=findIndex(arr1, arr2[j]); rank=rank+index*factorial(12-1-j); System.out.println("元素所在坐标"+arr2[j]+index); arr1[arr2[j]-'a']='l'+1; } System.out.println(rank+1); } } static public int factorial(int n) { int result=1; for(int i=1;i<=n;i++) { result=result*i; } return result; } static public int findIndex(char[] arr,char c) { int index=0; for(int i=0;i<12;i++) { if(arr[i]<c) index++; //System.out.println(arr[i]+" "+c); //System.out.println("元素所在坐标"+index); } return index; }
}