← Backtracking

Micro-Drill #195 — Path with maximum gold (grid backtrack)

Backtracking Target: 15s

Grid backtracking: visit cells with gold, mark visited by zeroing, restore on backtrack. Try every start.

def getMaximumGold(grid):
    m, n = len(grid), len(grid[0])
    def dfs(i, j):
        if i < 0 or i >= m or j < 0 or j >= n or grid[i][j] == 0:
            return 0
        val = grid[i][j]
        grid[i][j] = 0  # mark visited
        best = 0
        for di, dj in (0,1),(0,-1),(1,0),(-1,0):
            best = max(best, dfs(i+di, j+dj))
        grid[i][j] = val  # unmark
        return val + best

    return max(dfs(i, j)
               for i in range(m) for j in range(n)
               if grid[i][j] > 0)

Type it from memory. Go.

Practice Problems

Related Coding Drills

← Micro #194 Micro #196 →