1 #include <cstdio>
2 #include <iostream>
3 using namespace std;
4 void Swap(char &s1,char &s2);
5
6 int main()
7 {
8 char ans,s[5][5];
9 int dx,dy,Case=0;//用于储存空格位置
10 while(true){
11 bool flag=true;
12 for(int i=0;i<5;i++){
13 for(int j=0;j<5;j++){
14 scanf("%c",&s[i][j]);
15 if(s[0][0]=='Z') return 0;
16 if(s[i][j]==' '){
17 dx=i; dy=j;
18 }
19 }
20 getchar();
21 }
22 while((ans=getchar())!='0'){
23 if(ans=='A'&&dx-1>=0){
24 Swap(s[dx][dy],s[dx-1][dy]);
25 dx-=1;
26 }
27 else if(ans=='B'&&dx+1<=4){
28 Swap(s[dx][dy],s[dx+1][dy]);
29 dx+=1;
30 }
31 else if(ans=='L'&&dy-1>=0){
32 Swap(s[dx][dy],s[dx][dy-1]);
33 dy-=1;
34 }
35 else if(ans=='R'&&dy+1<=4){
36 Swap(s[dx][dy],s[dx][dy+1]);
37 dy+=1;
38 }
39 else if(ans!='\n') flag=false;
40 }
41 getchar();
42 if(Case) printf("\n");
43 printf("Puzzle #%d:\n",++Case);
44 if(flag){
45 for(int i=0;i<5;i++){
46 for(int j=0;j<5;j++)
47 if(!j) printf("%c",s[i][j]);
48 else printf(" %c",s[i][j]);
49 printf("\n");
50 }
51 }
52 else
53 printf("This puzzle has no final configuration.\n");
54 }
55 return 0;
56 }
57 void Swap(char &s1,char &s2){
58 char c=s1;
59 s1=s2;
60 s2=c;
61 }
uva227谜题
于 2022-01-30 09:50:42 首次发布