40分DFS求调谢谢大佬!
  • 板块B3625 迷宫寻路
  • 楼主Pianmu
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/5/14 20:50
  • 上次更新2023/10/23 15:43:04
查看原帖
40分DFS求调谢谢大佬!
929763
Pianmu楼主2023/5/14 20:50
#include <bits/stdc++.h>
using namespace std;
const int maxn=105;
bool vis[maxn][maxn];
char mapp[maxn][maxn];
int m,n;
bool ans=false;
int dx[4]={0,1,-1,0};
int dy[4]={1,0,0,-1};
void dfs(int x,int y)
{
	if (x<0||y<0||mapp[x][y]=='#'||vis[x][y]==true||x>m||y>n)
		return ;
	vis[x][y]=true;
	if (x==m-1&&y==n-1)
	{
		ans=true;
		return ;
	}
	for (int i=0;i<4;i++)
	{
		int sx=x+dx[i];
		int sy=y+dy[i];
		if (!vis[sx][sy]&&mapp[sx][sy]=='.'&&sx<=m&&sy<=n)
		{
			vis[sx][sy]=true;
			dfs(sx,sy);
		}
	}
}
int main()
{
	cin>>n>>m;
	for (int i=0;i<n;i++)
	{
		for (int j=0;j<m;j++)
		{
			cin>>mapp[i][j];
		}
	}
	dfs(0,0);
	if (ans)
		cout<<"Yes"<<endl;
	else
		cout<<"No"<<endl;
	return 0;
}
2023/5/14 20:50
加载中...