UVa227 Puzzle(谜题)
解答:
#include<iostream> #include<cstring> #include<cstdio> using namespace std; char s[7][7],op,a; int n=0,x,y,b=1,bb=1; void putout() { printf("This puzzle has no final configuration.\n"); b=0; return; } int main() { //freopen("1.txt","r",stdin); while(1) { n++; b=1; for(int i=1;i<=5;i++) { for(int j=1;j<=5;j++) { s[i][j]=getchar(); if(s[i][j]=='Z') return 0; if(s[i][j]==' ') { x=i; y=j; } } s[0][0]=getchar(); } printf("Puzzle #%d\n",n); op='1'; for(int i=0;op!='0';i++) { op=getchar(); if(op=='A') { if(x-1>=1) { swap(s[x-1][y],s[x][y]); x=x-1; continue; } else { putout(); break; } } else if(op=='B') { if(x+1<=5) { swap(s[x+1][y],s[x][y]); x=x+1; continue; } else { putout(); break; } } else if(op=='L') { if(y-1>=1) { swap(s[x][y-1],s[x][y]); y=y-1; continue; } else { putout(); break; } } else if(op=='R') { if(y+1<=5) { swap(s[x][y+1],s[x][y]); y=y+1; continue; } else { putout(); break; } } else if(op==' '||op=='\n'||op=='0') continue; putout(); break; } while(op!='0') op=getchar(); op=getchar(); if(b) { for(int i=1;i<=5;i++) { for(int j=1;j<=5;j++) { cout<<s[i][j]<<" "; } cout<<endl; } } cout<<endl; } // cout<<x<<y<<'*'; }