• python for遍历怎么带下标。enumerate 内置函数
  • 递归的大体思路。找到一个然后,深入。不能进入格子两次 这种条件可以通过在当前层改变当前值的方式来避免重入
  • 递归的出口。如果四个有任何一个满足就深入,深入 [深入的结果是一个bool值],如果长度相等返回true,因为上一层递归 l+1 了,,这个有点难理解。l表示走过的长度生成的字符串是不是已经相等了
  • 回溯法,本层做完操作了 要还原,不能影响其他层
from typing import List

class Solution:
    def exist(self, board: List[List[str]], word: str) -> bool:
        # leetcode submit region end(Prohibit modification and deletion)
        for i, vi in enumerate(board):
            for j, vj in enumerate(vi):
                if vj == word[0]:
                    if self._dfs(board, word, i, j, 0):
                        return True
        return False

    # 怎么判断不能走过走过的路,把他赋空
    def _dfs(self, board, word, i, j, l):
        if l == len(word):
            return True
        if i < 0 or j < 0 or i == len(board) or j == len(board[0]):
            return False
        if board[i][j] == word[l]:
            tmp = board[i][j]
            board[i][j] = ''

            if self._dfs(
                    board, word, i + 1, j, l + 1) or self._dfs(
                board, word, i - 1, j, l + 1) or self._dfs(
                board, word, i, j + 1, l + 1) or self._dfs(
                board, word, i, j - 1, l + 1):
                return True
            else:
                board[i][j] = tmp
Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐