题解 | #迷宫问题#回溯(注意去重)

迷宫问题

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

while (str = readline()) {
    const [m, n] = str.split(' ').map(Number);
    const nums = [];
    for (let i = 0; i < m;i++) {
        nums.push(readline().split(' '))
    }
    const path = [];
    function backtrack (i, j) {
        if (i === m - 1 && j === n - 1) {
            path.push(`${i},${j}`);
            path.forEach((v) => {
                console.log(`(${v})`);
            });
            return;
        }
        if (path.includes(`${i},${j}`)) {
            // 去重
            return;
        }
        path.push(`${i},${j}`);
        if (i >= 1 && nums[i - 1][j] === '0') {
            backtrack(i - 1, j);
        }
        if (j >= 1 && nums[i][j - 1] === '0') {
            backtrack(i, j - 1);
        }
         if (j < n - 1 && nums[i][j + 1] === '0') {
            backtrack(i, j + 1);
        }
        if (i < m - 1 && nums[i + 1][j] === '0') {
            backtrack(i + 1, j);
        }
        path.pop();
    }
    backtrack(0, 0);
}

全部评论

相关推荐

找到实习就改名4月17日下午更改:这个在牛客不是老熟人了吗
点赞 评论 收藏
分享
评论
2
2
分享

创作者周榜

更多
牛客网
牛客企业服务