当前位置: 首页 > news >正文

单词搜索- python-dfs剪枝

题目:

思路:

参考:https://leetcode.cn/problems/word-search/solutions/2361646/79-dan-ci-sou-suo-hui-su-qing-xi-tu-jie-5yui2/?envType=study-plan-v2&envId=top-100-liked

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

  • 深度优先搜索:即暴力法遍历矩阵中所有字符串可能性。DFS 通过递归,先朝一个方向搜到底,再回溯至上个节点,沿另一个方向搜索,以此类推。
  • 剪枝:在搜索中,遇到“这条路不可能和目标字符串匹配成功”的情况,例如当前矩阵元素和目标字符不匹配、或此元素已被访问,则应立即返回,从而避免不必要的搜索分支。

代码:

class Solution: def exist(self, board: List[List[str]], word: str) -> bool: def dfs(i,j,k): if not 0<=i<len(board) or not 0<=j<len(board[0]) or board[i][j] != word[k]: return False if k == len(word)-1: return True board[i][j] = '' res = dfs(i+1,j,k+1) or dfs(i-1,j,k+1) or dfs(i,j+1,k+1) or dfs(i,j-1,k+1) board[i][j] = word[k] return res for i in range(len(board)): for j in range(len(board[0])): if dfs(i,j,0):return True return False

算法解析:

  • 递归参数:当前元素在矩阵board中的行列索引ij,当前目标字符在word中的索引k
  • 终止条件:

    • false:​​​​​​​​​​​​​​(1) 行或列索引越界(2) 当前矩阵元素与目标字符不同(3) 当前矩阵元素已访问过 ( (3) 可合并至 (2) )

    • true:k = len(word) - 1,即字符串word已全部匹配。

  • 递推工作:​​​​​​​

    • 标记当前矩阵元素: 将board[i][j]修改为空字符'',代表此元素已访问过,防止之后搜索时重复访问。
    • 搜索下一单元格: 朝当前元素的 上、下、左、右 四个方向开启下层递归,使用 或 连接 (代表只需找到一条可行路径就直接返回,不再做后续 DFS ),并记录结果至 res 。

    • 还原当前矩阵元素: 将board[i][j]元素还原至初始值,即word[k]
  • 返回值:返回布尔量res,代表是否搜索到目标字符串。
http://www.jsqmd.com/news/143942/

相关文章:

  • dropClust:高效处理大规模单细胞RNA聚类
  • 不轻信AI,警惕AI一本正经的胡说八道
  • 2026最新研究:如何在隐私保护环境下实现高效知识图谱问答
  • FPC软排线厂家哪家好?2025FPC生产厂家实力榜单 - 栗子测评
  • 路由器配置的综合实验
  • UUD白羊座蓝牙音箱MX02拆解:音质与设计的平衡
  • HCJ-9201全自动绝缘油耐压试验机,上海徐吉电气出品 - 品牌推荐大师1
  • ConstrainedDelaunay2D 顺逆时针限制三角剖分
  • AI 测试真正的分水岭,正在从“会不会用模型”走向“能不能跑稳系统”
  • win10找回自带的windows照片查看器——打开jpg、png、gif、psd其他格式的图片
  • 【资深架构师亲授】Open-AutoGLM生产级部署方案:高并发下的稳定性优化秘诀
  • 2025年度成都万象城优质餐厅排行榜:值得打卡的万象城可口美食餐饮企业有哪些? - 工业设备
  • 在docker中部署influxdb
  • 2025杭州民办高中师资揭秘:这几所杭州民办高中口碑好 - 栗子测评
  • FreeBSD 11.0-RELEASE 发布亮点与升级指南
  • 软著信息如何查询?怎么辨别软著证书真伪? - 还在做实验的师兄
  • 锂电池连接器厂家?2025防水连接器公司推荐榜单 - 栗子测评
  • 手写汉字对比
  • 2025年有实力的海关数据品牌企业推荐:比较不错的海关数据品牌企业有哪些? - 工业品网
  • Win10下安装TensorFlow 2.3.0 GPU版本完整教程
  • 今天来和大家聊一个当下科技领域特别火爆的概念——AI Agent!
  • YOLO动态链接库的编译与调用详解
  • 2025年12月读写器厂家推荐,rfid读写器、超高频读写器、超高频rfid读写器厂家选择指南 - 品致汇
  • 3D 医学扫描同时显示患者的皮肤、骨骼的 3D 模型(通过等值面提取),以及三个正交切片
  • C语言如何编译成可执行文件?五大步骤详解
  • 【Open-AutoGLM实战排错手册】:从CORS到跨域,彻底解决网页调用难题
  • 2025激光切管机厂家测评:激光切管机哪家好大盘点 - 栗子测评
  • 矩阵乘向量的本质:基底变换与线性组合
  • 2025年AI大模型工程师终极学习指南:全网首发实战项目+资源大合集,不可错过!
  • 为什么90%的海外团队仍选择非Open-AutoGLM方案?真相令人震惊