Number of Increasing Paths in a Grid LeetCode solution in C++

1
class Solution {
2
public:
3
int mod = 1000000007;
4
int dx[4] = {1, 0, -1, 0};
5
int dy[4] = {0, 1, 0, -1};
6
int countPaths(vector<vector<int>> &grid) {
7
vector<vector<int>> dp(grid.size(), vector<int>(grid[0].size(), -1));
8
long long count = 0;
9
for (int i = 0; i < grid.size(); i++) {
10
for (int j = 0; j < grid[0].size(); j++) {
11
count = (count % mod + dfs(i, j, grid, dp) % mod) % mod;
12
}
13
}
14
return (int)count % mod;
15
}
16

17
protected:
18
bool isvalid(int x, int y, vector<vector<int>> &grid) {
19
if (x < 0 or x >= grid.size() or y < 0 or y >= grid[0].size()) return false;
20
return true;
21
}
22
int dfs(int x, int y, vector<vector<int>> &grid, vector<vector<int>> &dp) {
23
if (dp[x][y] != -1) return dp[x][y];
24

25
int ans = 1;
26
for (int i = 0; i < 4; i++) {
27
if (isvalid(x + dx[i], y + dy[i], grid) and grid[x][y] > grid[x + dx[i]][y + dy[i]]) {
28
ans = (ans % mod + dfs(x + dx[i], y + dy[i], grid, dp) % mod) % mod;
29
}
30
}
31
return dp[x][y] = ans % mod;
32
}
33
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0