UVA1587 Box

题意:给定6个矩形的长和宽wi和hi(1<=wi,hi<=1000),判断它们能否构成长方体的六个面。
思路:一个矩形的六个面中,每两个对立面是相同的,相当于由三个不同的面复制而成,而这三个面又相连在一起,所以最多只会出现三条不同的长度线条。
UVA1587 Box_第1张图片

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");
    }
}

你可能感兴趣的:(UVA1587 Box)