leetcode 79. 单词搜索 (python)

题解:本题是一个遍历搜索问题,我们可以用回溯算法进行求解。在本题中,我们需要对二维网格的每个单元格进行遍历来查找和word的匹配;因此我们首先建立一个二层的循环来遍历每一个单元格;代码如下:class Solution: def exist(self, board, word): #设置数组中的元素只能被使用一次 used = [[Fals...
摘要由CSDN通过智能技术生成

在这里插入图片描述
题解:
本题是一个遍历搜索问题,我们可以用回溯算法进行求解。

  1. 在本题中,我们需要对二维网格的每个单元格进行遍历来查找和word的匹配;
    因此我们首先建立一个二层的循环来遍历每一个单元格;
    代码如下:
class Solution:
    def exist(self, board, word):

        #设置数组中的元素只能被使用一次
        used = [[False] * len(board[0]) for i in range(len(board))]
        # print(used)


        for i in range(len(board)):
            for j in range(len(board[0])):

                if(self.dfs_search(board, i, j,word,0,len(word) - 1)):
                    return True
        return False
  1. 同时,在网格内移动的时候,我们可以向四个方向进行移动查找和word中一个字母的匹配(实际中需要排除来到这个位置的方向,只有三个方向;但是这个需要我们写代码去排除,并且,每个元素进行查找时需要排除的方向不一样,因此在代码中我们依旧写四个方向)
    代码如下:
    def dfs_search(self, board, x, y, word,index,length_word):

        if board[x][y] != word[0]:
            return False

        #递归终止条件
        if index == length_word:
            return True

        #四个方向进行遍历
        # print(x,y)
        # print(word[0])
        # print('index,',index)
        # print('word',len(word) - 1)
        # if board[x][y] == word[0]:

            # used[x][y] = True
        tmp = board[x][y]
        board[x][y] = 0


        #向下遍历
        if (x < len(board) - 1 and self.dfs_search(board, x + 1, y, word[1:],index + 1,length_word)) or \
            (y < len(board[0]) - 1 and self.dfs_search(board, x, y + 1, word[1:],index + 1,length_word)) or \
            (x > 0 and self.dfs_search(board, x - 1, y, word[1:], index + 1,length_word)) or \
            (y > 0 and self.dfs_search(board
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值