• 剑指offer12 矩阵中的路径


    剑指offer12 矩阵中的路径

    深度优先搜索(DFS)+剪枝

    DFS解析:

    • 递归参数:矩阵行列索引 ij ,目标字符在 word 中 索引 k
    • 终止条件:
      1. 行列索引越界
      2. 当前矩阵字符与目标字符不符合(包含已访问的情况
    • 成功条件:
      1. k = word.length - 1
    • 递推工作:
      1. 标记当前矩阵元素,表示已访问
      2. 递归调用dfs,向上下左右四个方向搜索
      3. 向上返回结果,同时回复矩阵元素

    ac代码:

    var exist = function(board, word) {
        const dfs = function(i, j, k){
            if(i < 0 || i > board.length-1 || j < 0 || j > board[0].length-1 || word[k] !== board[i][j])
                return false;
            if(k === word.length-1) return true;
            board[i][j] = " ";
            let res = dfs(i-1, j, k+1) || dfs(i, j-1, k+1) || dfs(i+1, j, k+1) || dfs(i, j+1, k+1);
            board[i][j] = word[k];
            return res;
        }
        if(board.length === 0 || board[0].length === 0) return false;
        for(let i = 0; i < board.length; i++){
            for(let j = 0; j < board[0].length; j++){
                let r = dfs(i, j, 0);
                if(r) return true;
            }
        }
        return false;
    };
    
  • 相关阅读:
    洛谷 P1097 统计数字
    个人冲刺09
    《需求工程 ——软件建模与分析》读书笔记02
    个人冲刺08
    《需求工程 ——软件建模与分析》读书笔记01
    个人冲刺07
    个人冲刺06
    个人冲刺05
    个人冲刺04
    个人冲刺03
  • 原文地址:https://www.cnblogs.com/peekapoooo/p/14352706.html
Copyright © 2020-2023  润新知