华为机试扑克牌24点问题通过率95没有输入输出数据怎么回事
import java.util.*; //Poker的二十四点运算 public class Main { public static Map<String, Integer> map = new HashMap<String, Integer>() { { put("2", 2); put("3", 3); put("4", 4); put("5", 5); put("6", 6); put("7", 7); put("8", 8); put("9", 9); put("10", 10); put("J", 11); put("Q", 12); put("K", 13); put("A", 1); } }; public static Map<Integer, String> map2 = new HashMap<Integer, String>() { { put(2,"2"); put(3,"3"); put(4,"4"); put(5,"5"); put(6,"6"); put(7,"7"); put(8,"8"); put(9,"9"); put(10,"10"); put(11,"J"); put(12,"Q"); put(13,"K"); put(1,"A"); } }; public static boolean isFind=false; public static void main(String[] args) { Scanner sc=new Scanner(System.in); while (sc.hasNext()){ String s=sc.nextLine(); if(s.contains("joker")||s.contains("JOKER")||s.contains("1")){ System.out.println("ERROR"); isFind=true; } else{ String[] chars=s.split(" "); List<Integer> list=new ArrayList<Integer>(); for (int i = 0; i < chars.length; i++) { list.add(map.get(chars[i])); } List<Character> list1=new ArrayList<Character>(); List<Integer> list2=new ArrayList<Integer>(); for (int i = 0; i < list.size(); i++) { int value=list.get(i); list.remove(i); list2.add(value); helper(list,value,list1,list2); list2.remove(list2.size()-1); list.add(i,value); } } if(isFind==false){ System.out.println("NONE"); } isFind=false; } } private static boolean helper(List<Integer> list, int value,List<Character> list1,List<Integer> list2) { if(list.size()==0&&value==24&&isFind==false){ isFind=true; for (int i = 0; i < list1.size(); i++) { System.out.print(map2.get(list2.get(i))+list1.get(i)); } System.out.println(map2.get(list2.get(list2.size()-1))); return true; } else if(list.size()==0){return false;} else{ for (int i = 0; i < list.size(); i++) { int tmp_value=list.get(i); list.remove(i); list1.add('+'); list2.add(tmp_value); helper(list, value+tmp_value,list1,list2); list1.remove(list1.size()-1); list1.add('-'); helper(list, value-tmp_value,list1,list2); list1.remove(list1.size()-1); list1.add('*'); helper(list, value*tmp_value,list1,list2); list1.remove(list1.size()-1); if(value%tmp_value==0){ list1.add('/'); helper(list, value*tmp_value,list1,list2); list1.remove(list1.size()-1); } list2.remove(list2.size()-1); list.add(i,tmp_value); } } return false; } }
#华为#