回溯迷宫找终点

Posted pluscat

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了回溯迷宫找终点相关的知识,希望对你有一定的参考价值。

迷宫找出口

技术图片

function isSafe(maze,x,y){
    if(x >= 0 && y >= 0 && x < maze.length && y < maze.length && maze[x][y] !== 0){
        return true
    }
    return false
}

function findPath(maze,solution,x,y){
    if( x === solution.length - 1 && y === solution[0].length - 1){
        solution[x][y] = 1
        return true
    }

    if(isSafe(maze,x,y)){
        solution[x][y] = 1
        if(findPath(maze,solution,x + 1,y)){
            return true
        }
        if(findPath(maze,solution,x, y + 1)){
            return true
        }
        solution[x][y] = 0
    }

    return false
}

function ratInAMaze(maze){
    let solution = []
    for(let i = 0; i < maze.length; i++){
        solution[i] = []
        for(let j = 0; j < maze[0].length; j++){
            solution[i][j] = 0
        }
    }
    
    if(findPath(maze,solution,0,0)){
        return solution
    }

    return 'not solution exsit'
}

const maze = [
    [1, 0, 0, 0],
    [1, 1, 1, 1],
    [0, 0, 1, 0],
    [0, 1, 1, 1]
  ];
  
console.log(ratInAMaze(maze));

以上是关于回溯迷宫找终点的主要内容,如果未能解决你的问题,请参考以下文章

数据结构与算法:迷宫回溯和八皇后问题

算法设计与分析 实验六 回溯法

回溯法求解迷宫问题

迷宫算法

dfs模板找起点到终点的所有可能路径

HDU - 1010 (DFS回溯法 + 奇偶剪枝)