(r, c)
| 6 | |
| 7 | @cache |
| 8 | def dfs(r, c): |
| 9 | if r == nR - 1 and c == nC - 1: |
| 10 | return grid[r][c] |
| 11 | paths = [] |
| 12 | for a, b in adj: |
| 13 | r2, c2 = r + a, c + b |
| 14 | if 0 <= r2 < nR and 0 <= c2 < nC: |
| 15 | paths.append(dfs(r2, c2)) |
| 16 | return grid[r][c] + min(paths) |
| 17 | return dfs(0, 0) |