猫和老鼠
#include <iostream> using namespace std; int main(int argc, char** argv) { int N; cin>>N; int x,y,X,Y; int m=0,c=0,b=0; string a[10]; for(int q=0;q<N;q++){ string a[10]; for(int j=0;j<10;j++){ cin>>a[j]; } for(int i=0;i<10;i++){ for(int j=0;j<10;j++){ if(a[i][j]=='C'){ X=i; Y=j; }else if(a[i][j]=='M'){ x=i; y=j; } } } while(b<100 && (X!=x || Y!=y)){ if(m==0 && x-1>=0 && a[x-1][y]!='*'){ x--; }else if(m==1 && y+1<10 && a[x][y+1]!='*'){ y++; }else if(m==2 && x+1<10 && a[x+1][y]!='*'){ x++; }else if(m==3 && y-1>=0 && a[x][y-1]!='*'){ y--; }else{ m=(m+1)%4; } if(c==0 && X-1>=0 && a[X-1][Y]!='*'){ X--; }else if(c==1 && Y+1<10 && a[X][Y+1]!='*'){ Y++; }else if(c==2 && X+1<10 && a[X+1][Y]!='*'){ X++; }else if(c==3 && Y-1>=0 && a[X][Y-1]!='*'){ Y--; }else{ c=(c+1)%4; } b++; } if(X==x&&Y==y){ cout<<b<<endl; }else{ cout<<"-1"; } } return 0; }