原题地址
Puzzle - UVA 227 - Virtual Judgehttps://vjudge.net/problem/UVA-227
解题思路
模拟,注意细节
AC代码
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main(){
//freopen("1.out","w",stdout);
string c[10];
//cin>>c[1];
char s;
getline(cin,c[1]);
int t=0;
while(c[1]!="Z"){
t++;
if(t!=1) printf("\n");
int l1,l2,pd=1;
for(int i=2;i<=5;i++) {
getline(cin,c[i]);
if(c[i].size()==4) c[i].append(" ");
}
//cout<<c[1];
for(int i=1;i<=5;i++){
if(c[i].find(" ")!=-1) {
l2=c[i].find(" ");
l1=i;
break;
}
}
scanf("%c",&s);
while(s!='0'){
//cout<<s<<endl;
if(s=='A'){
if(l1==1) {
pd=0;
}else {
c[l1][l2]=c[l1-1][l2];
c[l1-1][l2]=' ';
l1--;
}
}else if(s=='B'){
if(l1==5){
pd=0;
}else {
c[l1][l2]=c[l1+1][l2];
c[l1+1][l2]=' ';
l1++;
}
}else if(s=='R'){
if(l2==4){
pd=0;
}else {
c[l1][l2]=c[l1][l2+1];
c[l1][l2+1]=' ';
l2++;
}
}else if(s=='L'){
if(l2==0){
pd=0;
}else {
c[l1][l2]=c[l1][l2-1];
c[l1][l2-1]=' ';
l2--;
}
}
scanf("%c",&s);
}
if(pd==0) printf("Puzzle #%d:\nThis puzzle has no final configuration.\n",t);
else{
printf("Puzzle #%d:\n",t);
for(int i=1;i<=5;i++){
for(int j=0;j<=4;j++) {
if (j!=0) printf(" ");
printf("%c",c[i][j]);
}
printf("\n");
}
//printf("\n");
}
scanf("%c",&s);
getline(cin,c[1]);
}
return 0;
}