1219. 黄金矿工回溯一定要还原,g[i][j] = temp先右后上的DFS顺序下,1,2处的3被改变后,1,1处再探索到1,2处时已经被置为0 [[3,5,6,7,4,2], [4,3,1,0,2,0], [3,0,5,0,20,0] class Solution { public: int ans = 0; int n, m; void dfs(int i, int j, vector<vector<int>>& g, int sum){ if(i < 0 || i >= n || j < 0 || j >= m || g[i][j] == 0){ ans = max(ans, sum); return; } int temp = g[i][j]; sum += g[i][j]; g[i][j] = 0; dfs(i + 1, j, g, sum); dfs(i - 1, j, g, sum); dfs(i, j + 1, g, sum); dfs(i, j - 1, g, sum); g[i][j] = temp; } int getMaximumGold(vector<vector<int>>& grid) { n = grid.size(); m = grid[0].size(); for(int i = 0; i < n; i++){ for(int j = 0; j < m; j++){ vector<vector<int>> g = grid; if(grid[i][j] != 0){ dfs(i, j, g, 0); } } } return ans; } };