class Solution:
def exist(self, board: List[List[str]], word: str) -> bool:
#采用回溯法解决此问题
def check(i, j, k):
directions = [(0, 1), (0, -1), (1, 0), (-1, 0)]
if board[i][j] != word[k]:
return False
if k == len(word) -1:
return True
visited.add((i, j))
result = False
for di, dj in directions:
newi, newj = i + di, j + dj
if 0 <= newi < len(board) and 0 <= newj < len(board[0]):
if (newi, newj) not in visited:
if check(newi, newj, k+1):
return True
break
visited.remove((i, j))
return result
h, w = len(board), len(board[0])
visited = set()
for i in range(h):
for j in range(w):
if check(i, j, 0):
return True
return False