第一条题解!
2025-11-16 14:44:13
发布于:北京
4阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
const int N = 2001;
int n,m,sx,sy,fx,fy;
char a[N][N];
int vis[N][N];
int dx[4]={0,0,1,-1};
int dy[4]={1,-1,0,0};
int flag=0;
void dfs (int x,int y)
{
vis[x][y]=1;
if(x==fx && y==fy)
{
flag=1;
return;
}
for(int i=0;i<4;++i)
{
int nx =dx[i]+x;
int ny =dy[i]+y;
if(nx>=1 && nx<=n && ny>=1 && ny<=m && vis[nx][ny]==0 && a[nx][ny]=='.')
{
dfs(nx,ny);
}
}
}
int main()
{
cin>>n>>m;
cin>>sx>>sy>>fx>>fy;
for(int i=1;i<=n;++i)
for(int j=1;j<=m;++j)
cin>>a[i][j];
dfs(sx,sy);
if(flag==1)
cout<<"YES";
else
cout<<"NO";
return 0;
}
DFS套模版
这里空空如也




有帮助,赞一个