1、用map存储
2、全排列
3、数字过于大,用int 会爆掉 需要用long
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class _1603 {
static ArrayList<Integer> e= new ArrayList<>();
static int index = 0;
static long min = Long.MAX_VALUE;
public static void main(String[] args) throws IOException {
Map<String, Integer> m = new HashMap<>();
m.put("one", 1);
m.put("two", 2);
m.put("three", 3);
m.put("four", 4);
m.put("five", 5);
m.put("six", 6);
m.put("seven", 7);
m.put("eight", 8);
m.put("nine", 9);
m.put("ten", 10);
m.put("eleven", 11);
m.put("twelve", 12);
m.put("thirteen", 13);
m.put("fourteen", 14);
m.put("fifteen", 15);
m.put("sixteen", 16);
m.put("seventeen", 17);
m.put("eighteen", 18);
m.put("nineteen", 19);
m.put("twenty", 20);
m.put("a", 1);
m.put("both", 2);
m.put("another", 1);
m.put("first", 1);
m.put("second", 2);
m.put("third", 3);
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
String s1[]= s.split(" ");
String a[] = new String[100000];
index = 0;
for(int i=0;i<s1.length;i++) {
if(m.get(s1[i])!=null) {
int t = (m.get(s1[i])*m.get(s1[i]))%100;
if(t<=9) {
a[index] = "0"+String.valueOf(t);
}else {
a[index] = String.valueOf(t);
}
index++;
}
}
if(a[0]==null) {
System.out.println(0);
}else {
permutation(a, 0);
System.out.println(min);
}
}
public static void permutation(String[] ks,int i){
if(ks==null||i<0 ||i>index){//1
return;
}
if(i==index-1){//2
String s = "";
for(int k=0;k<index;k++) {
s = s+ks[k];
}
long min_s = Long.parseLong(s);
if(min>min_s) {
min = min_s;
}
}else{
for(int j=i;j<index;j++){//3
String temp=ks[j];//交换前缀,使之产生下一个前缀
ks[j]=ks[i];
ks[i]=temp;
permutation(ks,i+1);//4
temp=ks[j]; //将前缀换回来,继续做上一个的前缀排列.//5
ks[j]=ks[i];
ks[i]=temp;
}
}
}
}