猫和老鼠

发布时间 2023-07-21 20:26:23作者: hanxuyao
#include <bits/stdc++.h>
using namespace std;
int main(int argc, char** argv) {
    int c=0,m=0,s=0,N,x,y,X,Y;
    string xyz[10];
    cin>>N;
    for(int V=0;V<N;V++){
        for(int O=0;O<10;O++){
            cin>>xyz[O];
        }
    }
    for(int i=0;i<10;i++){
        for(int j=0;j<10;j++){
            if(xyz[i][j]=='M'){
                x=i;
                y=j;
            }
            if(xyz[i][j]=='C'){
                X=i;
                Y=j;
            }
        }
    }
    while(s<100&&(X!=x||Y!=y)){
        if(m==0&&x-1>=0&&xyz[x-1][y]!='*'){
            x--;
        }else if(m==1&&y+1<10&&xyz[x][y+1]!='*'){
            y++;
        }else if(m==2&&x+1<10&&xyz[x+1][y]!='*'){
            x++;
        }else if(m==3&&y-1>=0&&xyz[x][y-1]!='*'){
            y--;
        }else{
            m=(m+1)%4;
        }
        s++;
        if(c==0&&X-1>=0&&xyz[X-1][Y]!='*'){
            X--;
        }else if(c==1&&Y+1<10&&xyz[X][Y+1]!='*'){
            Y++;
        }else if(c==2&&X+1<10&&xyz[X+1][Y]!='*'){
            X++;
        }else if(c==3&&Y-1>=0&&xyz[X][Y-1]!='*'){
            Y--;
        }else{
            c=(c+1)%4;
        }
    }
    if(x==X&&y==Y){
        cout<<s<<endl;
    }else{
        cout<<"-1"<<endl;
    }
    return 0;
}