请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左、右、上、下移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再次进入该格子。例如,在下面的3×4的矩阵中包含一条字符串“bfce”的路径(路径中的字母用加粗标出)。

[[“a”,“b”,“c”,“e”],
[“s”,“f”,“c”,“s”],
[“a”,“d”,“e”,“e”]]

但矩阵中不包含字符串“abfb”的路径,因为字符串的第一个字符b占据了矩阵中的第一行第二个格子之后,路径不能再次进入这个格子。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/ju-zhen-zhong-de-lu-jing-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
————————————————

class Solution:def exist(self, board: List[List[str]], word: str) -> bool:if not board:return Falseif not word:return Truerows = len(board)cols = len(board[0])flag = [[0 for _ in range(cols)] for _ in range(rows)]  # 用于标记是否已经检索过def func(matrix,string,lens,nr,nc):  # 深度优先遍历,判断字符串是否可达if lens == len(string):  # 递归停止条件,当遍历到最后一个元素之后,就可证明字符串是可大的return Truehaspath = False  if  0<=nr<rows and 0<=nc<cols and board[nr][nc]==string[lens] and flag[nr][nc]==0:  # 当前字符是否满足条件flag[nr][nc]=1  # 如果未被检索同时符合要求lens+=1 # 遍历下一个元素haspath = func(matrix,string,lens,nr-1,nc) or func(matrix,string,lens,nr+1,nc) or func(matrix,string,lens,nr,nc-1) or func(matrix,string,lens,nr,nc+1)  # 使用递归函数if not haspath:  # 如果找不到符合的字符,使用回溯lens-=1flag[nr][nc]=0return haspath  # 字符串是否可达的标志strs = 0for i in range(rows):for j in range(cols):if func(board,word,strs,i,j):return Truereturn False

leetcode —— 面试题12. 矩阵中的路径相关推荐

  1. 剑指offer:面试题12. 矩阵中的路径

    题目:矩阵中的路径 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径.路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左.右.上.下移动一格.如果一条路径经过了矩阵的某一 ...

  2. 剑指Offer - 面试题12. 矩阵中的路径(DFS回溯)

    1. 题目 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径.路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左.右.上.下移动一格.如果一条路径经过了矩阵的某一格,那么 ...

  3. 剑指offer面试题12. 矩阵中的路径(矩阵搜索)(深度优先搜索)(剪枝)

    题目描述 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径.路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左.右.上.下移动一格.如果一条路径经过了矩阵的某一格,那么该 ...

  4. 剑指offer 回溯法 面试题12 矩阵中的路径 面试题13 机器人的运动范围

    题目12 bool has_path_core(char *matrix, int rows, int cols, int row, int col, string a, int &pathl ...

  5. LeetCode-剑指 Offer 12. 矩阵中的路径

    剑指 Offer 12. 矩阵中的路径 思路一:DFS+回溯 DFS 解析: 递归参数: 当前元素在矩阵 board 中的行列索引 i 和 j ,当前目标字符在 word 中的索引 k . 终止条件: ...

  6. 【算法】剑指 Offer 12. 矩阵中的路径

    文章目录 1.概述 2.我的算法 2.1 棋盘 2.1 开始节点 2.2 点没被访问 2.3 点是否在棋盘内 2.4 下一步 2.5 主方法 2.6 核心方法 2.7 测试类 3.leecode1 1 ...

  7. 【附可运行代码】剑指 Offer 12. 矩阵中的路径

    立志用最少的代码做最高效的表达 给定一个 m x n 二维字符网格 board 和一个字符串单词 word .如果 word 存在于网格中,返回 true :否则,返回 false . 单词必须按照字 ...

  8. 剑指offer——12.矩阵中的路径(不熟)

    题目: 题1:请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径.路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子.如果一条路径经过了矩 ...

  9. 剑指 Offer 12. 矩阵中的路径

    这里使用了回溯算法,回溯算法是一种比较特别的DFS,它需要在达到搜索条件后,回溯上一次,继续搜索.普通的DFS适合找路径是否存在的问题,而回溯算法适合解决有几条路径的问题. 这里给出DFS的模板 df ...

最新文章

  1. 如何理解矩阵的特征向量和特征值?
  2. [转]解读Unity中的CG编写Shader系列3——表面剔除与剪裁模式
  3. Window7+vs2008+QT环境搭建
  4. ASP.NET MVC Music Store教程(2):控制器
  5. InnoDB原理篇:Change Buffer是如何提升索引性能的?
  6. [Hadoop]在Windows上安装Hadoop
  7. sweetalert2不相应回车_你还不知道的SketchUp建模小技能
  8. 本周没有学习,估计用脑过度...
  9. 关于CVE-2020-14882,你需要知道的都在这里
  10. 【青梅快讯】惊喜不断,Greenplum 最新版本 6.13.0已发布
  11. AE MG动画脚本motion2 脚本使用方法学习笔记
  12. 计算机windows用户名密码怎么查,电脑密码怎么查看? 从零教你查询方式
  13. 取得平均薪水最高的部门的部门名称
  14. BH1621FVC-TR光环境传感器
  15. Xilinx ISE系列教程(8):读取FPGA芯片唯一ID号
  16. 在手机装linux客户端,在Linux下安装QQ客户端
  17. 彻底卸载iNotePad软件
  18. 坚果云企业版服务器端,企业网盘服务器功能
  19. Gradle 1.12用户指南翻译——第五十章. 依赖管理
  20. PixHawk飞控和Mission Planner地面站安装调试

热门文章

  1. scorm课件学习状态
  2. 面试:String 常量池
  3. Javascript - ES6新语法概览
  4. Hibernate多对多映射 - 连接表
  5. jQuery操作CSS常见问题
  6. 使用 XAML 格式化工具:XAML Styler
  7. sysv-rc-conf --- Linux设置开机自动启动
  8. C#LeetCode刷题之#653-两数之和 IV - 输入 BST(Two Sum IV - Input is a BST)
  9. C#LeetCode刷题之#888-公平的糖果交换(Fair Candy Swap)
  10. php 获取当前页面url_PHP获取URL –如何获取当前页面的完整URL