news 2026/4/16 12:56:04

单词搜索- python-dfs剪枝

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
单词搜索- 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,代表是否搜索到目标字符串。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/11 15:16:14

紧急避坑!Open-AutoGLM最新版本调用网页失败的3个已知缺陷及临时解决方案

第一章&#xff1a;Open-AutoGLM调用不了网页当尝试通过 Open-AutoGLM 调用网页服务时&#xff0c;用户可能会遇到无法正常加载或响应的情况。该问题通常由网络配置、API 端点设置错误或权限限制引起。检查网络连接与代理设置 确保运行环境具备稳定的外网访问能力。若处于企业内…

作者头像 李华
网站建设 2026/4/9 19:56:41

你真的了解AutoGLM吗?:深度剖析其架构设计与推理优化逻辑

第一章&#xff1a;你真的了解AutoGLM吗&#xff1f;&#xff1a;深度剖析其架构设计与推理优化逻辑AutoGLM 是智谱AI推出的一系列自动化生成语言模型&#xff0c;其核心目标是在减少人工干预的前提下&#xff0c;实现高效、精准的自然语言理解与生成。该模型并非单一结构&…

作者头像 李华
网站建设 2026/4/16 11:15:31

PyTorch多GPU并行训练全指南

PyTorch多GPU并行训练实战指南 在深度学习模型日益庞大的今天&#xff0c;单张GPU已经很难支撑动辄百亿参数的训练需求。从BERT到LLaMA&#xff0c;现代大模型对计算资源的要求呈指数级增长。面对这一挑战&#xff0c;如何高效利用多块GPU协同工作&#xff0c;成为每一位AI工程…

作者头像 李华
网站建设 2026/4/16 10:58:37

基于YOLOv8的车辆过线计数与检测区域设置

基于YOLOv8的车辆过线计数与检测区域设置 在城市交通管理、智能安防和车流监控等实际场景中&#xff0c;对道路上行驶车辆进行自动统计是一项基础但关键的任务。传统的人工计数方式效率低、成本高&#xff0c;而基于视频分析的自动化方案正成为主流。最近我尝试使用 YOLOv8 搭配…

作者头像 李华
网站建设 2026/4/15 17:57:15

支持 RAG 知识库 + Function Call,JBoltAI 解锁 Java AI 开发更多可能

对于长期深耕Java生态的技术团队而言&#xff0c;AI转型早已不是可选项&#xff0c;而是关乎企业竞争力的必答题。但现实中的转型之路往往布满荆棘&#xff1a; legacy系统架构僵化&#xff0c;AI能力难以无缝嵌入&#xff1b;企业沉淀的海量私有知识&#xff08;如内部规程、业…

作者头像 李华
网站建设 2026/4/16 11:09:34

Open-AutoGLM一键部署实战(手把手教学,新手也能当天跑通)

第一章&#xff1a;Open-AutoGLM一键部署实战概述Open-AutoGLM 是一款面向大语言模型自动化推理与部署的开源工具&#xff0c;旨在降低 GLM 系列模型在生产环境中的部署门槛。通过集成模型加载、服务封装、API 暴露和资源调度等核心功能&#xff0c;Open-AutoGLM 实现了从模型获…

作者头像 李华