题解 | 迷宫寻路

迷宫寻路

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函数判断即可

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务