二维表找单词只能是连续的(横,竖,斜)

输出一直是false,重点在dfs函数,绕晕了
from typing import List
def exist(board: List[List[str]], word: str) -> bool:
# dfs寻找
m, n = len(board), len(board[0])

# 当前位置为(i, j),匹配到第k个字符
def dfs(i, j, k):
    # 当数组越界或不相等时则不匹配
    if not 0 <= i < m or not 0 <= j < n  or not board[i][j] == word[k]:
        return False
    # 匹配成功
    if k == len(word) - 1:
        return True
    # 避免走回头路
    board[i][j] = ''
    #下面是判断所要搜索的方向,8种情况
    if k>0:
        if board[i - 1][j] == word[k-1]:
            res = dfs(i + 1, j, k + 1)
            # 恢复当前的网格内字符
            board[i][j] = word[k]
            return res
        elif board[i + 1][j] == word[k-1]:
            res = dfs(i - 1, j, k + 1)
            # 恢复当前的网格内字符
            board[i][j] = word[k]
            return res
        elif board[i][j - 1] == word[k-1]:
            res = dfs(i, j + 1, k + 1)
            # 恢复当前的网格内字符
            board[i][j] = word[k]
            return res

        elif board[i + 1][j + 1] == word[k-1]:
            res = dfs(i - 1, j - 1, k + 1)
            # 恢复当前的网格内字符
            board[i][j] = word[k]
            return res
        elif board[i - 1][j - 1] == word[k-1]:
            res = dfs(i + 1, j + 1, k + 1)
            # 恢复当前的网格内字符
            board[i][j] = word[k]
            return res
        elif board[i - 1][j + 1] == word[k-1]:
            res = dfs(i + 1, j - 1, k + 1)
            # 恢复当前的网格内字符
            board[i][j] = word[k]
            return res
        elif board[i + 1][j - 1] == word[k-1]:
            res = dfs(i - 1, j + 1, k + 1)
            # 恢复当前的网格内字符
            board[i][j] = word[k]
            return res
        else:
            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(m):
    for j in range(n):
        if dfs(i, j, 0):
            return True
return False

if name == "main":
n = int(input())
m = int(input())
line = [[0] * m] * n
for i in range(n):
line[i] = input().split(" ")
word = input()
print(exist(line, word))

img

你要横竖斜的去找,那要一直往一个方向找才行啊
你应该写4个二重循环,每个找不同的方向
而不是写一个循环,然后每一步都往各个方向去找
那也不是一条线啊,可以随便拐弯