leetcode-157周赛-5215黄金矿工

题目描述:

 

 

 

 方法一:dfs

 

class Solution:
    def getMaximumGold(self, grid: List[List[int]]) -> int:
        maxx = 0
        R, C = len(grid), len(grid[0])
        
        def dfs(r, c, visited, count):
            nonlocal maxx
            count += grid[r][c]
            maxx = max(maxx, count)
            visited.add((r, c))
            for nr, nc in [[r+1, c], [r, c+1], [r-1, c], [r, c-1]]:
                if 0 <= nr < R and 0 <= nc < C and grid[nr][nc] != 0 and (nr, nc) not in visited:
                    dfs(nr, nc, visited, count)
            visited.remove((r, c))
            count -= grid[r][c]
        
        for r in range(len(grid)):
            for c in range(len(grid[0])):
                if grid[r][c] != 0:
                    dfs(r, c, set(), 0)
        
        return maxx

 

posted @ 2019-10-07 10:17  oldby  阅读(178)  评论(0编辑  收藏  举报