求助,如何考虑没相遇?测试点3,6,8超时
查看原帖
求助,如何考虑没相遇?测试点3,6,8超时
1061881
SQRW楼主2024/3/16 10:28
 #include<bits/stdc++.h>
 using namespace std;
char a[12][12],x,y,x2,y2,z,z2;
int n=0;
int main(){
    for(int i=0;i<=11;i++){
        for(int j=0;j<=11;j++){
            if(i==0||i==11||j==0||j==11)a[i][j]='*';
            else cin>>a[i][j];
            if(a[i][j]=='C'){
                x=i;
                y=j;
            }
            if(a[i][j]=='F'){
                x2=i;
                y2=j;
            }
        }
    }
    while(1){
        n++;
		z%=4;
        z2%=4;
        if(z==0){
                if(a[x-1][y]!='*')x--;
        else z++;}
        else if(z==1){
                if(a[x][y+1]!='*')y++;
        else z++;}
        else if(z==2){
                if(a[x+1][y]!='*')x++;
        else z++;}
       else  if(z==3){
                if(a[x][y-1]!='*')y--;
        else z++;}
        if(z2==0){
                if(a[x2-1][y2]!='*')x2--;
        else z2++;}
        else if(z2==1){
                if(a[x2][y2+1]!='*')y2++;
        else z2++;}
        else if(z2==2){
                if(a[x2+1][y2]!='*')x2++;
        else z2++;}
        else if(z2==3){
                if(a[x2][y2-1]!='*')y2--;
        else z2++;}
 
        if(x==x2&&y==y2){
            cout<<n;
            return 0;
        }
    }
    return 0;}
2024/3/16 10:28
加载中...