Solution:
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
typedef struct
{
int x,y;
} point;
int main()
{
int count = 0;
while(1)
{
bool flag;
int i,j;
char pu[6][6]= {0};
// for(i=0; i<5; i++)
// for(j=0; j<5; j++)
// scanf("%c",pu[5][5]);
/// %c会读取回车进入字符串中
/// A--above,B--below,L--left,R--right
// for(i=0; i<6; i++)
// for(j=0; j<6; j++)
// cin>>pu[i][j];
gets(pu[0]);if(pu[0][0]=='Z') break;
gets(pu[1]),gets(pu[2]),gets(pu[3]),gets(pu[4]);
count++;
#include<cstring>
#include<iostream>
using namespace std;
typedef struct
{
int x,y;
} point;
int main()
{
int count = 0;
while(1)
{
bool flag;
int i,j;
char pu[6][6]= {0};
// for(i=0; i<5; i++)
// for(j=0; j<5; j++)
// scanf("%c",pu[5][5]);
/// %c会读取回车进入字符串中
/// A--above,B--below,L--left,R--right
// for(i=0; i<6; i++)
// for(j=0; j<6; j++)
// cin>>pu[i][j];
gets(pu[0]);if(pu[0][0]=='Z') break;
gets(pu[1]),gets(pu[2]),gets(pu[3]),gets(pu[4]);
count++;
///输入
if(count>1) cout<<endl;
cout<<"Puzzle #"<<count<<":"<<endl;
point b;
for(i=0; i<5; i++)
{
for(j=0; j<5; j++)
if(pu[i][j]==' ')
{
b.x=i,b.y=j;
break;
}
}
///判断空格位置并记录
flag = true;
char option;
while(~scanf("%c",&option))
{
if(option=='0') break;
else switch(option)
{
case 'A':
if(b.x==0) flag = false;
else
{
pu[b.x][b.y] = pu[b.x-1][b.y];
pu[b.x-1][b.y] = ' ';
b.x = b.x-1;
}
// cout<<b.x<<" "<<b.y<<endl;
break;
case 'B':
if(b.x==4) flag = false;
else
{
pu[b.x][b.y] = pu[b.x+1][b.y];
pu[b.x+1][b.y] = ' ';
b.x = b.x+1;
}
break;
case 'B':
if(b.x==4) flag = false;
else
{
pu[b.x][b.y] = pu[b.x+1][b.y];
pu[b.x+1][b.y] = ' ';
b.x = b.x+1;
}
// cout<<b.x<<" "<<b.y<<endl;
break;
case 'L':
if(b.y==0) flag = false;
else
{
pu[b.x][b.y] = pu[b.x][b.y-1];
pu[b.x][b.y-1] = ' ';
b.y = b.y-1;
}
break;
case 'L':
if(b.y==0) flag = false;
else
{
pu[b.x][b.y] = pu[b.x][b.y-1];
pu[b.x][b.y-1] = ' ';
b.y = b.y-1;
}
// cout<<b.x<<" "<<b.y<<endl;
break;
case 'R':
if(b.y==4) flag = false;
else
{
pu[b.x][b.y] = pu[b.x][b.y+1];
pu[b.x][b.y+1] = ' ';
b.y = b.y+1;
}
break;
case 'R':
if(b.y==4) flag = false;
else
{
pu[b.x][b.y] = pu[b.x][b.y+1];
pu[b.x][b.y+1] = ' ';
b.y = b.y+1;
}
// cout<<b.x<<" "<<b.y<<endl;
break;
default :
continue;
}
break;
default :
continue;
}
// cout<<"continue"<<endl;
}
if(flag == false) cout<<"This puzzle has no final configuration."<<endl;
else
{
for(i=0; i<5; i++)
{
for(j=0; j<4; j++)
printf("%c ",pu[i][j]);
printf("%c\n",pu[i][j]);
}
}
getchar();
}
return 0;
if(flag == false) cout<<"This puzzle has no final configuration."<<endl;
else
{
for(i=0; i<5; i++)
{
for(j=0; j<4; j++)
printf("%c ",pu[i][j]);
printf("%c\n",pu[i][j]);
}
}
getchar();
}
return 0;
}