[LeetCode]题解(python):079-Word Search

题目来源:

  https://leetcode.com/problems/word-search/


 

题意分析:

  给定一个子表板和一个一个词,返回这个词是否在子表版上。子表板之间只能水平和垂直相连,子表板中的字符只能访问一次。


 

题目思路:

  这是一个典型的深度优先搜索。首先找到第一个字符,从这个字符开始进行深度优先搜索,搜索的时候要记得把已经搜索的记录为true。


 

代码(Python):

  

 1 class Solution(object):
 2     def exist(self, board, word):
 3         """
 4         :type board: List[List[str]]
 5         :type word: str
 6         :rtype: bool
 7         """
 8         l = len(word)
 9         if l == 0:
10             return False
11         m = len(board)
12         if m == 0: return False
13         n = len(board[0])
14         visit = [[False for i in range(n)] for j in range(m)]
15         def dfs(x,y,word):
16             if len(word) == 0: return True
17             if x > 0 and not visit[x-1][y] and board[x - 1][y] == word[0]:
18                 visit[x - 1][y] = True
19                 if dfs(x - 1,y,word[1:]):
20                     return True
21                 visit[x - 1][y] = False
22             if y > 0 and not visit[x][y-1] and board[x][y-1] == word[0]:
23                 visit[x][y-1] = True
24                 if dfs(x,y-1,word[1:]):
25                     return True
26                 visit[x][y-1] = False
27             if x + 1< m and not visit[x+1][y] and board[x+1][y] == word[0]:
28                 visit[x+1][y] = True
29                 if dfs(x+1,y,word[1:]):
30                     return True
31                 visit[x+1][y] = False
32             if y + 1 < n and not visit[x][y + 1] and board[x][y + 1] == word[0]:
33                 visit[x][y + 1] = True
34                 if dfs(x,y + 1,word[1:]):
35                     return True
36                 visit[x][y + 1] = False
37             return False
38         for i in range(m):
39             for j in range(n):
40                 if board[i][j] == word[0]:
41                     visit[i][j] = True
42                     if dfs(i,j,word[1:]):
43                         return True
44                     visit[i][j] = False
45         return False
46             
View Code

 


 

转载请注明出处:http://www.cnblogs.com/chruny/p/5088549.html 

posted @ 2015-12-30 13:28  Ry_Chen  阅读(766)  评论(0编辑  收藏  举报