Minimum path cost in a grid
December 28, 2022
dynamic-programmingProblem URL: Minimum path cost in a grid
We will use recursion with memoization to solve this problem. The function helper
takes the current position (r, c)
and the current cost cost
. If the current position is the destination, we return the current cost. Otherwise, we iterate over the possible directions and return the minimum cost of the next position.
class Solution:
def minPathCost(self, grid: List[List[int]], moveCost: List[List[int]]) -> int:
ROWS, COLS = len(grid), len(grid[0])
@cache
def helper(r: int, c: int) -> int:
if r == 0:
return grid[r][c]
else:
return grid[r][c] + min(moveCost[grid[r-1][k]][c] + helper(r-1, k) for k in range(COLS))
return min(helper(ROWS-1, c) for c in range(COLS))
Time complexity: O(nm)
Space complexity: O(nm)