题目描述:

给定一个二维网络,给定任意起点与终点。每一步可以往4个方向走。要找出黄金最多的一条线路。

很明显的是要“一条路走到黑,一直下去直到某个条件停止”。

运用dfs(深度优先搜索)求解。

因为起点任意,所以从每个点开始搜,接着每个点又搜相邻点。反复如此。

递归的终止条件:

1:越界。

2:搜到已经走过的点也终止。

3:遇到黄金数量为0的点。

用一个形参变量sum存储每条线路的当前黄金数量。

每一次更新返回值res的值。

搜一个点先将其标记,再搜其4个方向相邻点,搜完相邻点后取消原标记。

解题代码:

 class Solution {
public int res = -10000000;
public int max = 0 ;
public boolean[][] vis = new boolean[20][20];
public int getMaximumGold(int[][] grid) {
for(int i = 0 ; i < grid.length;i++){
for(int j = 0 ;j < grid[0].length;j++){
dfs(grid,i,j,0);
}
}
return res;
}
public void dfs(int[][] grid,int i,int j,int sum){ if(i<0||j<0||i>=grid.length||j>=grid[0].length||grid[i][j] == 0 || vis[i][j] ){ // 递归终止条件
return ;
}
vis[i][j] = true; // 标记
sum += grid[i][j]; // 更新返回值
res = Math.max(sum,res);
dfs(grid,i-1,j,sum);
dfs(grid,i,j-1,sum);
dfs(grid,i+1,j,sum);
dfs(grid,i,j+1,sum);
vis[i][j] = false; // 取消标记 }
}

最新文章

  1. chadang saidui
  2. 输入m乘法表
  3. 【C#】在窗体中水平居中的控件,到了XP下不居中的解决办法
  4. HEAP CORRUPTION 错误
  5. Spring第一天
  6. Kali Linux 2016.2发布提供虚拟机以及系统镜像下载
  7. 161109、windows下查看端口占用情况
  8. javascript 倒计时获取验证码
  9. Win7 64位安装MySQL
  10. React + Node 单页应用「一」前端搭建
  11. 关于ASP.NET MVC的js和css资源管理
  12. 简单介绍python的双向队列
  13. MySQL实战45讲学习笔记:事务隔离级别(第三讲)
  14. centos7 安装oracle11g
  15. Fluent动网格【1】:概述
  16. Swift与JS的交互
  17. 3D开机动画
  18. activiti复盘重推的一种简单实现方式:
  19. ios开发之--tableview单选/多选实现(非tableview的editing状态)及默认选中
  20. WinForm中从SQLite数据库获取数据显示到DataGridView

热门文章

  1. Gamma阶段第八次scrum meeting
  2. Lab1:bootloader操作系统的启动
  3. odoo @api.constrains _sql_constrains
  4. CentOS7安装RabbitMQ,并设置远程访问
  5. 全国自考C++程序设计
  6. python(二)面向对象知识点
  7. Python3+Robot Framework+RIDE安装使用教程
  8. PowerBuilder学习笔记之1开发环境
  9. Rsync学习之旅上
  10. lucene字典实现原理(转)