栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

单词搜索-回溯79-python

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

单词搜索-回溯79-python

没看答案,二维数组的回溯(类似棋盘问题)。

  • 路径起始需要考虑所有可能的起始点。
  • 下一个字母的搜索空间为当前匹配字母的上下左右,同时要设置防过界和重复检查。
class Solution:
    def exist(self, board: List[List[str]], word: str) -> bool:
        n = len(word)
        row, col = len(board), len(board[0])
        flag = False
        visited = [[False] * col for _ in range(row)]

        def backtrack(pos, pos_r, pos_c):
            nonlocal n, flag, row, col, word

            if flag: return
            
            if pos == n:
                flag = True
                return
            
            # 防止数组索引过界
            if pos_r < 0 or pos_r >= row or pos_c < 0 or pos_c >= col:
                return

            # 防止同一个单元格内的字母被重复使用
            if visited[pos_r][pos_c] == True:
                return
            
            if pos == 0:
                for r in range(row):
                    for c in range(col):
                        if flag: break
                        if board[r][c] == word[0]:
                            visited[r][c] = True
                            pos += 1
                            backtrack(pos, r, c+1)
                            backtrack(pos, r+1, c)
                            backtrack(pos, r-1, c)
                            backtrack(pos, r, c-1)
                            pos -= 1
                            visited[r][c] = False
            else:
                if word[pos] == board[pos_r][pos_c]:
                    visited[pos_r][pos_c] = True
                    pos += 1
                    backtrack(pos, pos_r, pos_c+1)
                    backtrack(pos, pos_r+1, pos_c)
                    backtrack(pos, pos_r-1, pos_c)
                    backtrack(pos, pos_r, pos_c-1)
                    pos -= 1
                    visited[pos_r][pos_c] = False
        
        backtrack(0, 0, 0)

        return flag
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/989725.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号