猫和老鼠

#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;
}

  

posted @ 2023-07-21 20:22  陈若麟  阅读(3)  评论(0编辑  收藏  举报