# 算法入门习题3-5 谜题

xiaoxiao2021-03-01  18

​ #include <stdio.h> #include<iostream> #include<cmath> #include <string.h> using namespace std; #define maxn 6 char s[maxn][maxn]={"TRGSJ","XDOKI","M VLN","WPABE","UQHCF"}; char input[85]; int arrtop=2; // 行 int arrleft=1; // 列 int A(){ //上 if(arrtop>0){ s[arrtop][arrleft]=s[arrtop-1][arrleft]; arrtop-=1; s[arrtop][arrleft]=' '; } else{ return 0; } return 1; } int B(){ //下 if(arrtop<maxn-2){ s[arrtop][arrleft]=s[arrtop+1][arrleft]; arrtop+=1; s[arrtop][arrleft]=' '; } else{ return 0; } return 1; } int L(){ //左 if(arrleft>0){ s[arrtop][arrleft]=s[arrtop][arrleft-1]; arrleft-=1; s[arrtop][arrleft]=' '; }else{ return 0; } return 1; } int R(){ //右 if(arrleft<maxn-2){ s[arrtop][arrleft]=s[arrtop][arrleft+1]; arrleft+=1; s[arrtop][arrleft]=' '; }else{ return 0; } return 1; } int main(){ cin>>input; int k=0; int tag=1; while(input[k]!='0'){ switch(input[k]){ case 'A':tag=A();break; case 'B':tag=B();break; case 'L':tag=L();break; case 'R':tag=R();break; default: cout<<"This puzzle has no final configuration."<<endl;break; } if(!tag) break; k++; } if(tag){ for(int i=0;i<5;i++){ for(int j=0;j<5;j++){ cout<<s[i][j]<<"\t"; } cout<<endl; } } else{ cout<<"This puzzle has no final configuration."<<endl; } return 0; } ​