UVA 227
这道题虽然思路简单,但是想要A却不简单,因为对格式的要求比较让人头疼
#include <iostream> #include<stdio.h> #include<stdlib.h> #include<string> #include<string.h> #include<set> using namespace std; int main() { int n,si,sj,flag,visi; char m[6][8]; int num=0; while(gets(m[0])){ num++; flag=-1; visi=-1; if(strcmp(m[0],"Z")==0) return 0; gets(m[1]); gets(m[2]); gets(m[3]); gets(m[4]); for(int i=0;i<5;i++){ for(int j=0;j<5;j++){ if(m[i][j]==' '){ si=i;sj=j; i=5;j=5; } } } char s [1000]; bool exit_koro = false; while( !exit_koro&&gets(s)){ for(int i=0;i<strlen(s);i++){ if(s[i]=='0'||visi==1){ exit_koro=true; break; } if(s[i]=='A'){ if(si-1<0){ visi=1; } else{ m[si][sj]=m[si-1][sj]; m[si-1][sj]=' '; si=si-1; } } if(s[i]=='B'){ if(si+1>=5){ visi=1; } else{ m[si][sj]=m[si+1][sj]; m[si+1][sj]=' '; si=si+1; } } if(s[i]=='R'){ if(sj+1>=5){ visi=1; } else{ m[si][sj]=m[si][sj+1]; m[si][sj+1]=' '; sj=sj+1; } } if(s[i]=='L'){ if(sj-1<0){ visi=1; } else{ m[si][sj]=m[si][sj-1]; m[si][sj-1]=' '; sj=sj-1; } } } } if(num>1) printf("\n"); if(visi==-1){ printf("Puzzle #%d:\n",num); for(int i=0;i<5;i++){ printf ("%c %c %c %c %c\n",m[i][0],m[i][1],m[i][2],m[i][3],m[i][4]); } } else{ printf("Puzzle #%d:\n",num); printf("This puzzle has no final configuration.\n"); } //打出空行!! } return 0; }