输入输出都很复杂
1.输入的指令可能中间有空行。
2.矩阵如果空格在末尾需要判断,因为空格无法读入。
3.输出的时候两个例子之间有空行,最后一个没有。
java代码:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Scanner;
public class UVA227 {
static char[][] c=new char[5][5];
public static void main(String[] args) throws IOException {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
int k=1;
while(true){
for (int i = 0; i < 5; i++) {
Arrays.fill(c[i],' ');
}
int p=0,q=0;
boolean flag1=false;
for (int i = 0; i < 5; i++) {
String s = br.readLine();
if(s.equals("Z")){
flag1=true;
break;
}
if(s.length()==5){
for (int i1 = 0; i1 < 5; i1++) {
c[i][i1] = s.charAt(i1);
if (c[i][i1] == ' ') {
p = i;
q = i1;
}
}
}
else{
for (int i1 = 0; i1 < 4; i1++) {
c[i][i1] = s.charAt(i1);
}
p = i;
q = 4;
}
}
if(flag1)break;
if(k==1) {
System.out.println("Puzzle #1:");
k++;
}
else System.out.println("\nPuzzle #"+(k++)+":");
String s;
boolean flag=false;
StringBuffer sb=new StringBuffer();
while(true){
s=br.readLine();
sb.append(s);
for (int i = 0; i < s.length(); i++) {
if(s.charAt(i)=='0'){
flag=true;
break;
}
}
if(flag)break;
}
s=sb.toString();
boolean flag2=true;
for (int i = 0; i < s.length()-1; i++) {
if(s.charAt(i)=='A'){
if(p-1<0){
flag2=false;
System.out.println("This puzzle has no final configuration.");
break;
}
c[p][q]=c[p-1][q];
c[p-1][q]=' ';
p=p-1;
}
if(s.charAt(i)=='B'){
if(p+1>4){
flag2=false;
System.out.println("This puzzle has no final configuration.");
break;
}
c[p][q]=c[p+1][q];
c[p+1][q]=' ';
p=p+1;
}
if(s.charAt(i)=='L'){
if(q-1<0){
flag2=false;
System.out.println("This puzzle has no final configuration.");
break;
}
c[p][q]=c[p][q-1];
c[p][q-1]=' ';
q=q-1;
}
if(s.charAt(i)=='R'){
if(q+1>4){
flag2=false;
System.out.println("This puzzle has no final configuration.");
break;
}
c[p][q]=c[p][q+1];
c[p][q+1]=' ';
q=q+1;
}
}
if(flag2){
for (int i = 0; i < 5; i++) {
for (int i1 = 0; i1 < 5; i1++) {
if(i1==4) System.out.print(c[i][i1]);
else System.out.print(c[i][i1]+" ");
}
System.out.println();
}
}
}
}
}