题解 | #迷宫问题# DFS + 回溯

迷宫问题

https://www.nowcoder.com/practice/cf24906056f4488c9ddb132f317e03bc

JS Node ACM 模式

const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void (async function () {
    // Write your code here
    let maze = [];
    while ((line = await readline())) {
        maze.push(line.split(" ").map(Number));
    }
    let coos = maze.shift();
    let row = coos[0],
        col = coos[1];
    let path = [];

    function dfs(r, c) {
        // 1. 判断当前位置是否在迷宫内
        if (r < 0 || r >= row || c < 0 || c >= col || maze[r][c] === 1)
            return false;
        // 2. 当前位置在迷宫内, 标记当前位置为已走过(1)、
        //    将当前位置记入path
        maze[r][c] = 1;
        path.push([r, c]);
        // 3. 判断路径是否结束(走到终点)
        if (r === row - 1 && c === col - 1) return true;
        // 4. 路径没有结束,向四个方向寻找下一位置
        if (dfs(r + 1, c) || dfs(r - 1, c) || dfs(r, c + 1) || dfs(r, c - 1))
            return true;
        // 5. 没找到合法位置,回溯、退出
        path.pop();
        return false;
    }

    dfs(0, 0);

    for (p of path) {
        console.log(`(${p[0]},${p[1]})`);
    }
})();

全部评论

相关推荐

ProMonkey2024:5个oc?厉害! 但是有一个小问题:谁问你了?😡我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了(别的帖子偷来的,现学现卖😋)
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务