DFS和剪枝的操作已经写的很顺手了
class Solution(object):
def exist(self, board, word):
Length=len(board[0])-1
Broad=len(board)-1
sign=[[False]*len(board[0]) for y in board]
def DFS(i,j,n):
if n==len(word):#最后一层直接返回正确
return True
if i<0 or j<0 or i>Broad or j>Length:#越界返回错误
return False
if not sign[i][j] and board[i][j]==word[n]:
sign[i][j]=True
if DFS(i-1,j,n+1):return True
if DFS(i+1,j,n+1):return True
if DFS(i,j-1,n+1):return True
if DFS(i,j+1,n+1):return True
sign[i][j]=False
for i in range(len(board)):
for j in range(len(board[0])):
if DFS(i,j,0):return True
return False