京东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");
}
}
} #京东##笔试题目#
