题意:给定6个矩形的长和宽wi和hi(1<=wi,hi<=1000),判断它们能否构成长方体的六个面。
思路:如下图,先按照大小顺序排列整齐,再将输入的六组长宽整型数组转化为如图形式,根据长方体6面两两长宽对应,以及3条公共边,得出判断条件。这种方法比较简单粗暴。(这题正方体也属于长方体哦!)
—————>>
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while(in.hasNext()) {
int[] l = new int[6];//长
int[] r = new int[6];//宽
int t = 0;
for(int i = 0;i<6;i++) {
l[i] = in.nextInt();
r[i] = in.nextInt();
if(l[i]<r[i]){//长放右宽放左
t=l[i];
l[i]=r[i];
r[i]=t;
}
}
for(int i = 0;i<l.length;i++) {//两列各自从大到小排列
for(int j = 0;j<l.length-1-i;j++) {//长列
if(l[j]<l[j+1]) {
t = l[j];
l[j] = l[j+1];
l[j+1] = t;
t= r[j];
r[j] = r[j+1];
r[j+1] =t;
}
if(l[j]==l[j+1]&&r[j]<r[j+1]) {//宽列
t= r[j];
r[j] = r[j+1];
r[j+1] = t;
}
}
}
boolean f = true;
for(int i=0;i<5;i=i+2){
if(l[i]!=l[i+1]||r[i]!=r[i+1])//6面两两对应
f=false;
}
if(l[0]!=l[2]||r[0]!=l[4]||r[2]!=r[4])//3条公共边
f = false;
if(f)
System.out.println("POSSIBLE");
else
System.out.println("IMPOSSIBLE");
}
in.close();
}
}