原题链接:https://leetcode-cn.com/problems/path-with-maximum-gold/
class Solution {
public:
int res = 0;
int m = 0, n = 0;
int dx[4] = {0, 1, 0, -1}, dy[4] = {1, 0, -1, 0};
vector<vector<bool>> visited;
int getMaximumGold(vector<vector<int>>& grid) {
m = grid.size(), n = grid[0].size();
for (int i = 0; i < m; ++i) {
for (int j = 0; j < n; ++j) {
visited = vector<vector<bool>>(m, vector<bool>(n, false));
dfs(grid, i, j, 0);
}
}
return res;
}
void dfs(vector<vector<int>>& grid, int i, int j, int cnt) {
if (i < 0 || j < 0 || i >= m || j >= n || !grid[i][j] || visited[i][j]) {
res = max(res, cnt);
return;
}
visited[i][j] = true;
for (int k = 0; k < 4; ++k) {
int x = i + dx[k], y = j + dy[k];
dfs(grid, x, y, cnt + grid[i][j]);
}
visited[i][j] = false;
return;
}
};