猫和老鼠

发布时间 2023-07-21 20:26:24作者: 王一行(小号)
#include <iostream>
using namespace std;
int main() {
    int n,m = 0,m1 = 0,x,y,x1,y1,z = 0;
    cin>>n;
    char a[10][10];
    for(int i = 1;i<=n;i++){
        for(int j = 0;j<10;j++){
            for(int k = 0;k<10;k++){
                cin>>a[j][k];
                if(a[j][k]=='M'){
                    x = j;
                    y = k;
                }else if(a[j][k]=='C'){
                    x1 = j;
                    y1 = k;
                }
            }
        }
        while(z<100 && (x!=x1 || y!=y1)){
            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(m1==0 && x1-1>=0 && a[x1-1][y1]!='*'){`
                x1--;
            }else if(m1==1 && y1+1<10 && a[x1][y1+1]!='*'){
                y1++;
            }else if(m1==2 && x1+1<10 && a[x1+1][y1]!='*'){
                x1++;
            }else if(m1==3 && y1-1>=0 && a[x1][y1-1]!='*'){
                y1--;
            }else{
                m1 = (m1+1)%4;
            }
            z++;
        }
        if(x==x1 && y==y1){
            cout<<z;
        }else{
            cout<<"-1";
        }
    }
    return 0;
}.