1class Solution {2int r = 0;3int c = 0;4int max = 0;56public int getMaximumGold(int[][] grid) {7r = grid.length;8c = grid[0].length;9for (int i = 0; i < r; i++) {10for (int j = 0; j < c; j++) {11if (grid[i][j] != 0) {12dfs(grid, i, j, 0);13}14}15}16return max;17}1819private void dfs(int[][] grid, int i, int j, int cur) {20if (i < 0 || i >= r || j < 0 || j >= c || grid[i][j] == 0) {21max = Math.max(max, cur);22return;23}24int val = grid[i][j];25grid[i][j] = 0;26dfs(grid, i + 1, j, cur + val);27dfs(grid, i - 1, j, cur + val);28dfs(grid, i, j + 1, cur + val);29dfs(grid, i, j - 1, cur + val);30grid[i][j] = val;31}32}