#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
const char inst[] = "ABLR";
const int dir[4][2] = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}};
int main(void)
{
int t = 0;
char s[5][6];
char c;
while ((s[0][0] = getchar()) != 'Z') {
int bi = 0, bj = 0;
for (int i = 0; i < 5; i ++) {
for (int j = 0; j < 5; j ++) {
if (!i && !j) continue;
s[i][j] = getchar();
if (s[i][j] == ' ') {bi = i, bj = j;}
}
getchar();
}
bool legal = true;
while ((c = getchar()) != '0') {
if (legal == false || c == '\n') continue;
int k;
for (k = 0; k < 4; k ++) {
if (c == inst[k]) break;
}
if (k == 4)
legal = false;
else {
int ni = bi+dir[k][0], nj = bj+dir[k][1];
if (0 <= ni && ni < 5 && 0 <= nj && nj < 5) {
swap(s[bi][bj], s[ni][nj]);
bi = ni, bj = nj;
} else
legal = false;
}
}
if (++t > 1) printf("\n");
printf("Puzzle #%d:\n", t);
if (legal == false)
printf("This puzzle has no final configuration.\n");
else {
for (int i = 0; i < 5; i ++) {
for (int j = 0; j < 5; j ++) {
printf("%c%c", s[i][j], j == 4 ? '\n' : ' ');
}
}
}
getchar();
}
return 0;
}
1 # include <iostream> 2 # include <cstdio> 3 4 using namespace std; 5 6 int main(){ 7 8 char a[5][7],t; 9 int n,m,i,j,k; 10 11 12 13 int cases = 0; 14 char modol[1001]; 15 while(gets(a[0])){ 16 17 if(a[0][0]=='Z') break; 18 19 for(i=1;i<5;i++){ 20 gets(a[i]); 21 } 22 23 24 //查找空格的位置 25 int x = 0,y = 0; 26 for(i=0;i<5;i++) 27 for(j=0;j<5;j++) 28 if(a[i][j]==' '){ 29 x=i,y=j; 30 break;//记录空格这个点 31 } 32 33 //scanf不读取\n和空格 34 int cnt = 0; 35 36 37 while(~scanf("%c",&modol[cnt])) 38 if(modol[cnt]!='0') cnt++; 39 else break; 40 /* 41 char ch; 42 while(scanf("%c",&ch)) 43 if(ch=='\n') continue; 44 else if(ch==' ') continue; 45 else if(ch!='0') { 46 modol[cnt]=ch; 47 cnt++; 48 } 49 else break; 50 */ 51 //gets与scanf("%c") getcahr 的区别 52 int flag=0, x1 = x , y1=y; 53 modol[cnt] = 0; 54 getchar(); 55 56 for(i=0;modol[i];i++){ 57 switch(modol[i]){ 58 case 'A' : x1 = x - 1;y1=y; break; 59 case 'B' : x1 = x + 1;y1=y; break; 60 case 'L' : x1 = x;y1=y-1; break; 61 case 'R' : x1 = x;y1=y+1; break; 62 } 63 64 if(x1<0||y1<0||x1>4||y1>4){ 65 flag = 1;break; 66 }else{ 67 a[x][y] = a[x1][y1]; 68 a[x1][y1] = ' '; 69 x = x1; 70 y = y1; 71 } 72 73 } 74 75 if(cases++) printf("\n"); 76 printf("Puzzle #%d:\n",cases); 77 78 if(flag){ 79 printf("This puzzle has no final configuration.\n"); 80 }else{ 81 for(i=0;i<5;i++){ 82 printf("%c",a[i][0]); 83 for(j=1;j<5;j++){ 84 printf(" %c",a[i][j]); 85 } 86 printf("\n"); 87 } 88 89 90 91 } 92 93 94 95 } 96 97 98 return 0; 99 }