题意:给你n个骰子,摆成一个塔,且相邻的骰子的接触的面的数字不同。而你看到的只有顶部和某两侧,现在给你的就顶部和某两侧的数字,请问,能否唯一判定所有面的数字。
解法:既然要唯一,且顶部的数(假设为z)确定了,那么要不能唯一判定所有面的数字,那下面的某一个或几个骰子的侧面的数是z或7-z,如此,即可解题,代码如下:
import java.io.BufferedInputStream;import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner cin = new Scanner(new BufferedInputStream(System.in)); int len = 101; int[] x = new int[len]; int[] y = new int[len]; int z = -1, n = -1; boolean flag; while (cin.hasNext()) { n = cin.nextInt(); z = cin.nextInt(); flag = true; for (int i = 0; i < n; i++) { x[i] = cin.nextInt(); y[i] = cin.nextInt(); if (flag && (0 != i)) { if (isTrue(x[i], z) || isTrue(y[i], z)) { flag = false; } } } if (flag) { System.out.printf("YES"); } else { System.out.printf("NO"); } } cin.close(); } private static boolean isTrue(int i, int z) { if (i == z || i + z == 7) { return true; } return false; }}