import java.util.Scanner;
public class Main {
static char a[][];
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
a=new char[5][5];
String cmd="";
int T=1;//记录第几轮
int line=0;//记录每一轮输入矩阵的行数
int flag=0;//命令合法flag=0
int flag2=0;//命令读取完成flag2=1
int flag3=0;//初始化后flag3=1
while(true) {
flag3=0;
String s=sc.nextLine();
if(s.equals("Z"))break;
if(line<=4) {
for (int i = 0; i < s.length(); i++) {
a[line][i]=s.charAt(i);
}
if(s.length()==4) {
a[line][4]=' ';
}
}
if(line>4) {
cmd+=s;
if(s.charAt(s.length()-1)=='0') {
flag2=1;//命令读取完成,开始执行命令
int index=getIndexOfBlank(a);
int x=index/10;
int y=index%10;
int[] num=new int[4];
for (int i = 0; i < cmd.length(); i++) {
if(cmd.charAt(i)=='A') {
num[0]++;
}else if(cmd.charAt(i)=='B') {
num[1]++;
}else if(cmd.charAt(i)=='L') {
num[2]++;
}else if(cmd.charAt(i)=='R') {
num[3]++;
}
}
if(num[0]>x||num[1]>5-x-1||num[2]>y||num[3]>5-y-1) {//命令不合法
flag=1;
}else {//命令合法
for (int i = 0; flag!=1 && i < cmd.length(); i++) {
if(cmd.charAt(i)=='0') break;
index=getIndexOfBlank(a);
x=index/10;
y=index%10;
if(cmd.charAt(i)=='A') {
swap(x,y,x-1,y);
}else if(cmd.charAt(i)=='B') {
swap(x,y,x+1,y);
}else if(cmd.charAt(i)=='L') {
swap(x,y,x,y-1);
}else if(cmd.charAt(i)=='R') {
swap(x,y,x,y+1);
}
// else {
// flag=1;//输入其他命令,命令不合法
// break;
// }
}
}
System.out.println("Puzzle #"+T+":");
if(flag==1) {//命令不合法
System.out.println("This puzzle has no final configuration.");
}else {//命令合法
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[0].length-1; j++) {
System.out.print(a[i][j]+" ");
}
System.out.println(a[i][4]);
}
}
System.out.println();
T++;
line=0;
flag=0;
flag2=0;
flag3=1;
cmd="";
}
}
if(flag3!=1) {
line++;
}
}
}
private static void swap(int x, int y, int i, int j) {
char t=a[x][y];
a[x][y]=a[i][j];
a[i][j]=t;
}
private static int getIndexOfBlank(char[][] a) {
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[0].length; j++) {
if(a[i][j]==' ')return i*10+j;
}
}
return 0;
}
}
谜题java
最新推荐文章于 2024-06-16 09:46:44 发布