#include<iostream>
#include<string>
using namespace std;
char word[5][6];
int A(int &x,int& y){
if(y==0){cout<<"This puzzle has no final configuration"<<endl;return 2;}
else {swap(word[x][y],word[x][--y]);return 0;}
}
int B(int &x,int &y){
if(y==4){cout<<"This puzzle has no final configuration"<<endl;return 2;}
else {swap(word[x][y],word[x][++y]);return 0;}
}
int L(int &x,int &y){
if(x==0){cout<<"This puzzle has no final configuration"<<endl;return 2;}
else {swap(word[x][y],word[--x][y]);return 0;}
}
int R(int &x,int &y){
if(x==4){cout<<"This puzzle has no final configuration"<<endl;return 2;}
else {swap(word[x][y],word[++x][y]);return 0;}
}
int main(){
for(;;){
int count=1;
int x,y;
gets(word[0]);
if(word[0][0]=='Z')break;
for(int i=1;i<5;i++)gets(word[i]);
for(int i=0;i<5;i++){
for(int j=0;j<5;j++){
if(word[i][j]==' '){x=i;y=j;}
}
}
string str;
cin>>str;
int leng=str.length();
int real=0;
for(int i=0;i<leng;i++){
switch(str[i]){
case 'A':real=A(x,y);
break;
case 'B':real=B(x,y);
break;
case 'L':real=L(x,y);
break;
case 'R':real=R(x,y);
break;
default :real=1;
}
if(real)break;
}
if(!(real-1)){
cout<<"Puzzle #"<<count<<":"<<endl;
for(int i=0;i<5;i++){
for(int j=0;j<4;j++)cout<<word[j][i]<<" ";
cout<<word[5][i];
cout<<endl;
}
count++;
cout<<endl;
}
}
}
Puzzle,ACM/ICPC World Finals 1993,UVa227
最新推荐文章于 2021-12-28 10:01:19 发布