WA#36求助
查看原帖
WA#36求助
458493
__BAI__楼主2022/8/14 18:58
#include<bits/stdc++.h>
using namespace std;
char s[55][55];
bool h=1;
bool vis[55][55][55][55][55];
int n,m;
void dfs(int x,int y,int zhi,int d1,int d2){
	if(x==-1)x+=n;
	if(y==-1)y+=m;
	if(x==n)x-=n;
	if(y==m)y-=m;
	//cout<<x<<' '<<y<<' '<<zhi<<endl;
	if(vis[x][y][zhi][d1][d2]==1)return;
	vis[x][y][zhi][d1][d2]=1;
	if(s[x][y]!='?'){
	if(s[x][y]=='@'){
		h=0;
		return;
	}
	if(s[x][y]=='<')d1=0,d2=-1;
	if(s[x][y]=='>')d1=0,d2=1;
	if(s[x][y]=='^')d1=-1,d2=0;
	if(s[x][y]=='v')d1=1,d2=0;
	if(s[x][y]=='_'){
		if(zhi==0)d1=0,d2=1;
		else d1=0,d2=-1;
	}
	if(s[x][y]=='|'){
		if(zhi==0)d1=1,d2=0;
		else d1=-1,d2=0;
	}
	if(s[x][y]>='0' and s[x][y]<='9')zhi=s[x][y]-'0';
	if(s[x][y]=='+')zhi+=1,zhi%=16;
	if(s[x][y]=='-')zhi+=15,zhi%=16;
	dfs(x+d1,y+d2,zhi,d1,d2);
	}else{
		dfs(x+1,y,zhi,1,0);
		dfs(x-1,y,zhi,-1,0);
		dfs(x,y+1,zhi,0,1);
		dfs(x,y-1,zhi,0,-1);
	}
	
}
int main(){
	cin>>n>>m;
	for(int i=0;i<n;i++)
		for(int j=0;j<m;j++)
			cin>>s[i][j];
	dfs(0,0,0,0,1);
	if(h==0)
		puts("YES");
	else
		puts("NO");
}
2022/8/14 18:58
加载中...