远端OJ尚未返回编译信息???
查看原帖
远端OJ尚未返回编译信息???
357900
猜一猜我是谁楼主2021/2/22 12:48
#include<bits/stdc++.h>
using namespace std;
int n,m,x,y;bool ans=0;
int dy[]={0,-1,1,0,0},dx[]={0,0,0,-1,1};
bool vis[50][50][50][50];
char a[50][50];
bool dfs(int x,int y,int k,int f){
    x=(x+n)%n;y=(y+m)%m;
    if(vis[x][y][k][f]) return;
    vis[x][y][k][f]=1;
    switch(a[x][y]){
        case '<':{f=1;break;}
        case '>':{f=2;break;}
        case '^':{f=3;break;}
        case 'v':{f=4;break;}
        case '\':{if(k==0)f=2;else f=1;break;}
        case '|':{if(k==0)f=4;else f=3;break;}
        case '?':{for(int i=1;i<=4;i++)if(dfs(x+dx[i],y+dy[i],k,i)) return 1;}
        case '.':break;
        case '@':{return 1;break;}
        case '+':{k=(k+1)%16;break;}
        case '-':{k=(k+15)%16;break;}
        default:{k=a[x][y]-'0';break;}
    }
    if(dfs(x+dy[f],y+dy[f],k,f)) return 1;
}
int main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            scanf("%c",&a[i][j]);
    ans=dfs(1,1,0,1);
    cout<<ans==1?"YES":"NO";
    return 0;
}
2021/2/22 12:48
加载中...