leetcode第79题单词搜索--DFS+剪枝

 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值