#include <iostream> #include <vector> #include <string> #include <stdio.h> using namespace std; void display(const vector<string> & puzzle) { for(int i=0;i<5;i++) { for(int j=0;j<5;j++) { if(j != 4)cout<<puzzle[i][j]<<" "; else cout<<puzzle[i][j]<<endl; } } } inline void swap(vector<string> & puzzle,int x1,int y1,int x2,int y2) { char t = puzzle[x1][y1];puzzle[x1][y1]=puzzle[x2][y2]; puzzle[x2][y2]=t; } bool move(vector<string> & puzzle,const string & directions,int x,int y) { for(int i=0;i<directions.size()-1;i++) { char m = directions[i]; int nx,ny; if(m=='A'){ if(x==0)return false; nx=x-1;ny=y; } else if(m == 'B'){ if(x==4)return false; nx=x+1;ny=y; } else if(m == 'L'){ if(y==0)return false; nx=x;ny=y-1; } else if(m == 'R'){ if(y==4)return false; nx=x;ny=y+1; } swap(puzzle,x,y,nx,ny); x=nx;y=ny; } return true; } int main() { string input; vector<string> vec(5); int cnt = 0,x,y; bool first = true; getline(cin,input); while(!(input.size()==1 && input[0] == 'Z')) { if(first == true)first = false; else printf("\n"); cnt++; //cout<<input.size()<<endl; vec[0]=input; for(int i=1;i<5;i++){getline(cin,input);vec[i]=input;} for(int i =0;i<5;i++) for(int j=0;j<5;j++){ if(vec[i][j] == ' '){ x=i;y=j; break; } } string directions; do{getline(cin,input);directions+=input;}while(input[input.size()-1]!='0'); // // display(vec); //cout<<directions<<endl; //cout<<x<<" "<<y<<endl; // if(move(vec,directions,x,y) == true){ printf("Puzzle #%d:\n",cnt); display(vec); }else{ printf("Puzzle #%d:\nThis puzzle has no final configuration.\n",cnt); } getline(cin,input); } } |
Double click to view unformatted code.