leetcode

Solution to some Leetcode problems written in C++
git clone git://git.dimitrijedobrota.com/leetcode.git
Log | Files | Refs | README | LICENSE

1219.cpp (894B)


0 class Solution {
1 int n, m;
2 bool valid(const int x, const int y) { return x >= 0 && x < n && y >= 0 && y < m; }
4 int dfs(vector<vector<int>> &grid, const int x, const int y) {
5 static const int dir[] = {1, 0, -1, 0, 1};
6 int res = 0;
8 grid[x][y] = -grid[x][y];
9 for (int k = 0; k < 4; k++) {
10 const int i = x + dir[k + 1];
11 const int j = y + dir[k];
12 if (!valid(i, j) || grid[i][j] <= 0) continue;
13 res = max(res, dfs(grid, i, j));
14 }
15 grid[x][y] = -grid[x][y];
16 return grid[x][y] + res;
17 }
19 public:
20 int getMaximumGold(vector<vector<int>> &grid) {
21 n = grid.size(), m = grid[0].size();
22 int res = 0;
23 for (int i = 0; i < n; i++) {
24 for (int j = 0; j < m; j++)
25 res = max(res, dfs(grid, i, j));
26 }
27 return res;
28 }
29 };