算法分析课每周练习 Word Search II

来源:互联网 发布:安卓的内存优化 编辑:程序博客网 时间:2024/06/06 03:13

题目

Word Search II

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里面见过,这。。。


阅读全文
0 0
原创粉丝点击