classSolution{boolean[][] vis;int ret,m,n;publicintgetMaximumGold(int[][] grid){m = grid.length;n = grid[0].length;vis =newboolean[m][n];for(int i =0; i < m; i++)for(int j =0; j < n; j++){//剪枝if(grid[i][j]!=0&&!vis[i][j]){vis[i][j]=true;dfs(grid,i,j,grid[i][j]);vis[i][j]=false;//回溯}}return ret;}int[] dx ={-1,1,0,0};int[] dy ={0,0,-1,1};//这里局部变量会自己恢复现场privatevoiddfs(int[][] grid,int i,int j,int path){ret =Math.max(ret,path);for(int k =0; k <4; k++){int x = i + dx[k];int y = j + dy[k];//剪枝if(x >=0&& x < m && y >=0&& y < n &&!vis[x][y]&& grid[x][y]!=0){vis[x][y]=true;dfs(grid,x,y,path + grid[x][y]);vis[x][y]=false;//回溯}}}}
-----接Java进阶笔记(初级)-----
目录 集合多线程 集合 ArrayList 可以通过List来接收ArrayList对象(因为ArrayList实现了List接口) 方法:接口名 柄名 new 实现了接口的类(); PS: List list new ArrayList();遍历…