Description
zx和ak得到了两个骰子,但是骰子的6个面上什么东西都没有,现在zx,ak要玩一个游戏,分别给两个骰子刻字母,每个骰子的上,下,左,右,前,后 分别标记a,b,c,d,e,f 6个字母之一,可以重复,现在如果可以对其中一个骰子通过至多一次操作后使得两个骰子变得完全相同,那么zx赢,否则ak赢。每次操作包括 前倒 或 后倒 或 左倒 或 右倒中的一种情况,完全相同就是指每个对应面上字母全都相同,现在ak,和zx已经在骰子上写好了字,现在由你来写个程序判断一下谁赢。
Input
文件输入包括多组样例,输入到文件结束。每组样例包括两行,第一行是6个字母代表第一个骰子的上,下,左,右,前,后面上的字母。第二行是6个字母代表第二个骰子的上,下,左,右,前,后面上的字母。
Output
每个样例输出包含一行,如果ak赢输出ak,否则输出zx
首先要读懂题意啊.....前倒:往前倒,原前面-->下面、原后面-->上面、原上面-->前面、原下面-->后面;
后倒、左倒、右倒同理。
开一个二维数组p表示需要枚举的方向,有五种(包含不变化的情况)(可顺可逆)
代码:
import java.util.Arrays;
import java.util.Scanner;
public class zxak与骰子 {
static char a[]=new char[10];
static char b[]=new char[10];
static char c[]=new char[10];
static int p[][]={
{1,2,3,4,5,6},{5,6,3,4,2,1},{3,4,2,1,5,6},{6,5,3,4,1,2},{4,3,1,2,5,6}};//五个方向,顺时针
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan=new Scanner(System.in);
while(scan.hasNext()){
String s1=scan.next();
String s2=scan.next();
for(int i=0;i<6;i++){
a[i]=s1.charAt(i);
b[i]=s2.charAt(i);
}
int i;
for(i=0;i<5;i++){ //依次枚举五个方向
for(int j=0;j<6;j++){
c[j]=a[p[i][j]-1]; //将枚举结果暂存数组c
}
int flag=0;
for(int j=0;j<6;j++){
if(c[j]!=b[j]){ //判断是否相等
flag=1;break;
}
}
if(flag==0){System.out.println("zx");break;}
}
if(i==5)System.out.println("ak");
}
}
}