演算法分析課每週練習 Word Search II
阿新 • • 發佈:2019-01-03
題目
Given a 2D board and a list of words from the dictionary, find all words in the board.
Each word must be constructed from letters of sequentially adjacent cell, where "adjacent" cells are those horizontally or vertically neighboring. The same letter cell may not be used more than once in a word.
分析
有一種叫boggle的遊戲
class Solution(Object): # @param board, a list of lists of 1 length string # @param word, a string # @return a boolean def findWords(self, board, word): def dfs(x, y, word): if len(word)==0: return True #up if x>0 and board[x-1][y]==word[0]: tmp=board[x][y]; board[x][y]='#' if dfs(x-1,y,word[1:]): return True board[x][y]=tmp #down if x<len(board)-1 and board[x+1][y]==word[0]: tmp=board[x][y]; board[x][y]='#' if dfs(x+1,y,word[1:]): return True board[x][y]=tmp #left if y>0 and board[x][y-1]==word[0]: tmp=board[x][y]; board[x][y]='#' if dfs(x,y-1,word[1:]): return True board[x][y]=tmp #right if y<len(board[0])-1 and board[x][y+1]==word[0]: tmp=board[x][y]; board[x][y]='#' if dfs(x,y+1,word[1:]): return True board[x][y]=tmp return False for i in range(len(board)): for j in range(len(board[0])): if board[i][j]==word[0]: if(dfs(i,j,word[1:])): return True return False
注:連做幾題都在s大的CS106B/X裡面見過,這。。。