1
# Runtime: 2506 ms (Top 21.4%) | Memory: 118.67 MB (Top 7.1%)7
self.di = [0, 0, -1, 1]8
self.dj = [-1, 1, 0, 0]11
def countPaths(self, grid):14
self.dp = [[0] * m for _ in range(n)]18
ans = (ans + self.dfs(grid, i, j, -1)) % self.mod21
def dfs(self, grid, i, j, prev):22
if i < 0 or j < 0 or i >= len(grid) or j >= len(grid[0]) or grid[i][j] <= prev:24
if self.dp[i][j] != 0:28
self.dp[i][j] += self.dfs(grid, i + self.di[k], j + self.dj[k], grid[i][j])29
self.dp[i][j] %= self.mod30
return self.dp[i][j] % self.mod