京东418笔试,第一题长方体,这样可以100%嘛?
//构成长方体最基本的可以想到:三对长宽,并且只能有长宽高三个数才可以; //将三对长宽和三个数都放进去set,保证唯一性,set的大小是3才可以,并且任意一个set大于3肯定是不可以的; //再考虑,只有一个数字,那这样是正方体,set大小是1; //再考虑,有两个数字,这时候分两种情况:第一种不可以:(2,6)(2,6)(2,2) (2,2)(2,2)(2,2),第二种可以:(2,6)(2,6)(2,6) (2,6)(2,2)(2,2) //所以这个时候就是,长宽相等的这一组的数量必须是2,不相等的必须是4才可以构成长方体。 import java.util.HashMap; import java.util.HashSet; import java.util.Scanner; import java.util.Set; public class Main0418 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int T = sc.nextInt(); //HashMap<Integer, Integer> map = new HashMap<Integer, Integer>(); //int flag = 1; boolean[] res = new boolean[T]; for(int i=0; i<T; i++) { Set<Integer> set1 = new HashSet<Integer>(); Set<String> set2 = new HashSet<String>(); HashMap<String, Integer> map = new HashMap<String, Integer>(); int[][] nums = new int[6][2]; int index1 = 0; int index2 = 0; for(int j=0; j<6; j++) { int a = sc.nextInt(); int b = sc.nextInt(); nums[j][0] = Math.min(a, b); nums[j][1] = Math.max(a, b); set1.add(nums[j][0]); set1.add(nums[j][1]); set2.add("(" + nums[j][0] + "," + nums[j][1] + ")"); Integer temp = map.get("(" + nums[j][0] + "," + nums[j][1] + ")"); if(temp == null) { map.put("(" + nums[j][0] + "," + nums[j][1] + ")", 1); } else { map.put("(" + nums[j][0] + "," + nums[j][1] + ")", temp+1); if(temp > 2) { index1 = nums[j][0]; index2 = nums[j][1]; } } } if(set1.size() > 3 || set2.size() > 3) res[i] = false; if(set1.size() == 1) res[i] = true; if(set1.size() == 2) { if(index1 != index2) res[i] = true; else res[i] = false; } } sc.close(); for(int i=0; i<T; i++) { if(res[i] == true) System.out.println("POSSIBLE"); else System.out.println("IMPOSSIBLE"); } } }
#京东##笔试题目#