题解 | 迷宫寻路
迷宫寻路
https://www.nowcoder.com/practice/0c8930e517444d04b426e9703d483ed4
#include <iostream>
using namespace std;
bool dfs(int x,int y);
const int N=105;
int n,m;
char g[N][N];
bool vis[N][N];
int dx[4]={-1,1,0,0};
int dy[4]={0,0,-1,1};
bool dfs(int x,int y){
if(x==n-1&&y==m-1) return true;
vis[x][y]=true;
for(int i=0;i<4;++i){
int nx=x+dx[i];
int ny=y+dy[i];
if(nx<0||nx>=n||ny<0||ny>=m) continue;
if(g[nx][ny]=='#') continue;
if(vis[nx][ny]) continue;
if(dfs(nx,ny)) return true;
}
return 0;
}
int main(){
cin>>n>>m;
for(int i=0;i<n;++i){
for(int j=0;j<m;++j){
cin>>g[i][j];
}
}
if(dfs(0,0)){ cout<<"Yes";}
else cout<<"No";
return 0;
}
常规的dfs,用bool函数判断即可
查看4道真题和解析