why RE?
查看原帖
why RE?
736701
高启凯楼主2022/8/29 22:42
#include<bits/stdc++.h>
using namespace std;
char up[20][20];
int M=0,C=0,Mx,My,Cx,Cy;
bool walk(){
    switch(M){
        case 0: if(up[Mx+1][My]=='*'||Mx==1)   M=(M+1)%4;
                else    Mx++;
                break;
        case 1: if(up[Mx][My+1]=='*'||My==10)   M=(M+1)%4;
                else    My++;
                break;
        case 2: if(up[Mx-1][My]=='*'||Mx==10)   M=(M+1)%4;
                else    Mx--;
                break;
        case 3: if(up[Mx][My-1]=='*'||My==1)   M=(M+1)%4;
                else    My--;
                break;
    }
    switch(C){
        case 0: if(up[Cx+1][Cy]=='*'||Cx==1)   C=(C+1)%4;
                else    Cx++;
                break;
        case 1: if(up[Cx][Cy+1]=='*'||Cy==10)   C=(C+1)%4;
                else    Cy++;
                break;
        case 2: if(up[Cx-1][Cy]=='*'||Cx==10)   C=(C+1)%4;
                else    Cx--;
                break;
        case 3: if(up[Cx][Cy-1]=='*'||Cy==1)   C=(C+1)%4;
                else    Cy--;
                break;
    }
    if(Cx==Mx&&Cy==My)
        return 1;
    else return 0;
}
int main(){
    for(int i=1;i<=10;i++){
        for(int j=1;j<=10;j++){
            cin>>up[i][j];
            if(up[i][j]=='C')
                Cx=i,Cy=j;
            if(up[i][j]=='F')
                Mx=i,My=j;
        }
    }
    for(int i=1;i<=500000;i++){
        if(walk()){
            cout<<i;return 0;
        }
    }
    cout<<0;
}
2022/8/29 22:42
加载中...