代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char in[100][10];
int main()
{
int i,j,x,y,p=0,g=0,h,q,m=1,judge[100]={0},e=1;
char puzzle[5][5],b,puzzle2[100][5][5];
while(m==1){
for(i=0;i<5;i++){
for(j=0;j<5;j++){
scanf("%c",&puzzle[i][j]);
if(puzzle[0][0]=='Z')
i=5,j=5,e=0,m=0,g--;
}
getchar();
}
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(puzzle[i][j]==' ')
x=i,y=j;
if(e==1)
for(p=0;p<100;p++){
scanf("%s",in[p]);
h=strlen(in[p])-1;
// printf("%c\n",in[0]);
getchar();
i=0;
while(i<=h){
if(in[p][i]=='A'){
if(x-1<0)
judge[g]=1,x+=2;
b=puzzle[x-1][y];
puzzle[x-1][y]=' ';
puzzle[x][y]=b;
x--;
}
if(in[p][i]=='B'){
if((x+1)>4)
judge[g]=1,x-=2;
b=puzzle[x+1][y];
puzzle[x+1][y]=' ';
puzzle[x][y]=b;
x++;
}
if(in[p][i]=='R'){
if(y+1>4)
judge[g]=1,y-=2;
b=puzzle[x][y+1];
puzzle[x][y+1]=' ';
puzzle[x][y]=b;
y++;
}
if(in[p][i]=='L'){
if(y-1<0)
judge[g]=1,y+=2;
b=puzzle[x][y-1];
puzzle[x][y-1]=' ';
puzzle[x][y]=b;
y--;
}
i++;
}
if(in[p][h]=='0'||in[p][h]=='\0'){
for(i=0;i<5;i++)
for(j=0;j<5;j++)
puzzle2[g][i][j]=puzzle[i][j];
}
if(in[p][h]=='0')
p=100;
}
g++;
}
for(q=0;q<g;q++){
printf("puzzle #%d:\n",q+1);
if(judge[q]==0){
for(i=0;i<5;i++){
for(j=0;j<5;j++)
printf("%c ",puzzle2[q][i][j]);
printf("\n");
}
printf("\n");
}
else
printf("This puzzle has no final configuration.\n");
}
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char in[100][10];
int main()
{
int i,j,x,y,p=0,g=0,h,q,m=1,judge[100]={0},e=1;
char puzzle[5][5],b,puzzle2[100][5][5];
while(m==1){
for(i=0;i<5;i++){
for(j=0;j<5;j++){
scanf("%c",&puzzle[i][j]);
if(puzzle[0][0]=='Z')
i=5,j=5,e=0,m=0,g--;
}
getchar();
}
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(puzzle[i][j]==' ')
x=i,y=j;
if(e==1)
for(p=0;p<100;p++){
scanf("%s",in[p]);
h=strlen(in[p])-1;
// printf("%c\n",in[0]);
getchar();
i=0;
while(i<=h){
if(in[p][i]=='A'){
if(x-1<0)
judge[g]=1,x+=2;
b=puzzle[x-1][y];
puzzle[x-1][y]=' ';
puzzle[x][y]=b;
x--;
}
if(in[p][i]=='B'){
if((x+1)>4)
judge[g]=1,x-=2;
b=puzzle[x+1][y];
puzzle[x+1][y]=' ';
puzzle[x][y]=b;
x++;
}
if(in[p][i]=='R'){
if(y+1>4)
judge[g]=1,y-=2;
b=puzzle[x][y+1];
puzzle[x][y+1]=' ';
puzzle[x][y]=b;
y++;
}
if(in[p][i]=='L'){
if(y-1<0)
judge[g]=1,y+=2;
b=puzzle[x][y-1];
puzzle[x][y-1]=' ';
puzzle[x][y]=b;
y--;
}
i++;
}
if(in[p][h]=='0'||in[p][h]=='\0'){
for(i=0;i<5;i++)
for(j=0;j<5;j++)
puzzle2[g][i][j]=puzzle[i][j];
}
if(in[p][h]=='0')
p=100;
}
g++;
}
for(q=0;q<g;q++){
printf("puzzle #%d:\n",q+1);
if(judge[q]==0){
for(i=0;i<5;i++){
for(j=0;j<5;j++)
printf("%c ",puzzle2[q][i][j]);
printf("\n");
}
printf("\n");
}
else
printf("This puzzle has no final configuration.\n");
}
return 0;
}
