题意:一个5*5的网格,其中恰好一个格子是空的,其他格子各有一个字母,一共有4种指令:A,B,L,R,分别表示把空格上,下,左,右的相邻字母移到空格中。
思路:模拟。
#include#include #include using namespace std;int cn=1;int main(){ char x[5][5]; string str; while(gets(x[0])) { if(x[0][0]=='Z')break; for(int i=1;i<5;i++)gets(x[i]); for(int i=0;;i++){cin>>str[i];int ch;ch=int(str[i]);if(ch==48){getchar();break;}} int a,b; for(int i=0;i<5;i++) for(int j=0;j<5;j++) if(x[i][j]==' '){a=i;b=j;} int flag=0; for(int k=0;str[k]!='0';k++) { if(str[k]=='A'){x[a][b]=x[a-1][b];x[a-1][b]=' ';if(!a){ if(cn!=1)cout< <<"Puzzle #"< <<":"< <<"This puzzle has no final configuration."<