AtCoder提交RE
查看原帖
AtCoder提交RE
1061337
ttcandy楼主2024/11/24 09:56

我在洛谷绑定的个人账号进行评测,结果UKE。
找到AtCoder原题后继续提交,RE了。
但是我的样例都是对的,并且自己出了几个也没有问题,开long long也没解决。

我使用的语言C++14(在AT是17,不知道跟这有没有关系),DFS解决的。

先说下思路:

  • 由于高桥君只有四个方向,那么可以新建dx与dy数组来保存偏移量。
  • dfs主干中,循环判断四次,即四个方向能不能走。如果能走的话,就把新坐标继续dfs。
  • main中先把起点设成不能走。
#include<iostream>

using namespace std;

long long dx[]={0,0,-1,1};
long long dy[]={1,-1,0,0};
long long n,m,sx,sy,fx,fy;
bool mp[600][600]={false},solve=false;

void dfs(int nx,int ny){
	if(solve) return;
	long long tx,ty;
	if(nx==fx&&ny==fy){
		solve=true;
		return;
	}
	for(int j=0;j<4;j++){
		tx=nx+dx[j];ty=ny+dy[j];
		if(mp[tx][ty]){
			mp[tx][ty]=0;
			dfs(tx,ty);
		}
	}
}

int main(){
	cin>>n>>m;
	for(long long i=0;i<n;i++){
		for(long long j=0;j<m;j++){
			char t;
			cin>>t;
			if(t=='#') mp[i][j]=0;
			else{
				mp[i][j]=1;
				if(t=='s'){
					sx=i;sy=j;
				}
				else if(t=='g'){
					fx=i;fy=j;
				}
			}
		}
	}
	mp[sx][sy]=false;
	dfs(sx,sy);
	if(solve) cout<<"Yes";
	else cout<<"No";
	return 0;
}
2024/11/24 09:56
加载中...