题意:给定6个矩形的长和宽wi和hi(1<=wi,hi<=1000),判断它们能否构成长方体的六个面。
思路:一个矩形的六个面中,每两个对立面是相同的,相当于由三个不同的面复制而成,而这三个面又相连在一起,所以最多只会出现三条不同的长度线条。
import java.util.Scanner;
import java.lang.String;
public class Main {
static Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
while (sc.hasNext()) {
print();
}
}
public static boolean judge() {
int[][] nub = new int[6][2];
int[] tem = new int[2];
for (int i = 0; i < 6; i++)
for (int j = 0; j < 2; j++)
nub[i][j] = sc.nextInt();
for (int k = 0; k < 6; k = k + 2) {
int t;
for (t = k + 1; t < 6; t++) {
if (nub[k][0] == nub[t][0] && nub[k][1] == nub[t][1]
|| nub[k][0] == nub[t][1] && nub[k][1] == nub[t][0]) {//将相同的两面放在一起
if (t != k + 1) {
tem[0] = nub[t][0];
tem[1] = nub[t][1];
nub[t][0]=nub[k+1][0];
nub[t][1]=nub[k+1][1];
nub[k+1][0]=tem[0];
nub[k+1][1]=tem[1] ;
}
break;
}
else continue;
}
if(t==6)
return false;
}
tem[1]=nub[0][1];
if(nub[2][0]==nub[0][0])//每两个不同的面有一个共同的边,另一面的两边是这两面的另外一边。
{
tem[1]=nub[2][1];
tem[0]=nub[0][1];
}
else if(nub[2][0]==nub[0][1])
{
tem[1]=nub[2][1];
tem[0]=nub[0][0];
}
else if(nub[2][1]==nub[0][1])
{
tem[1]=nub[2][0];
tem[0]=nub[0][0];
}
else if(nub[2][1]==nub[0][0])
{
tem[1]=nub[2][0];
tem[0]=nub[0][1];
}
else
return false;
if(tem[0]==nub[4][0]&&tem[1]==nub[4][1]||tem[0]==nub[4][1]&&tem[1]==nub[4][0])
return true;
else
return false;
//return true;
}
public static void print() {
System.out.println(judge()?"POSSIBLE":"IMPOSSIBLE");
}
}