当前位置: 首页 > news >正文

住房新建网站wordpress自定义字段图文

住房新建网站,wordpress自定义字段图文,wordpress捐,良精网站管理系统黄金矿工 leetcode1219. 黄金矿工题目描述回溯算法代码 回溯算法 leetcode1219. 黄金矿工 难度: 中等 eetcode 1219 黄金矿工 题目描述 你要开发一座金矿,地质勘测学家已经探明了这座金矿中的资源分布,并用大小为 m * n 的网格 grid 进行了标注。每个单元…

黄金矿工

  • leetcode1219. 黄金矿工
    • 题目描述
    • 回溯算法
    • 代码
  • 回溯算法

leetcode1219. 黄金矿工

难度: 中等
eetcode 1219 黄金矿工

题目描述

你要开发一座金矿,地质勘测学家已经探明了这座金矿中的资源分布,并用大小为 m * n 的网格 grid 进行了标注。每个单元格中的整数就表示这一单元格中的黄金数量;如果该单元格是空的,那么就是 0。
为了使收益最大化,矿工需要按以下规则来开采黄金:
每当矿工进入一个单元,就会收集该单元格中的所有黄金。
矿工每次可以从当前位置向上下左右四个方向走。
每个单元格只能被开采(进入)一次。
不得开采(进入)黄金数目为 0 的单元格。
矿工可以从网格中 任意一个 有黄金的单元格出发或者是停止。

示例 1:
输入:grid = [[0,6,0],[5,8,7],[0,9,0]]
输出:24
解释:
[[0,6,0],
[5,8,7],
[0,9,0]]
一种收集最多黄金的路线是:9 -> 8 -> 7。

示例 2:
输入:grid = [[1,0,7],[2,0,6],[3,4,5],[0,3,0],[9,0,20]]
输出:28
解释:
[[1,0,7],
[2,0,6],
[3,4,5],
[0,3,0],
[9,0,20]]
一种收集最多黄金的路线是:1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7。

提示:
1 <= grid.length, grid[i].length <= 15
0 <= grid[i][j] <= 100
最多 25 个单元格中有黄金。

回溯算法

首先了解什么是回溯算法:
解决一个回溯问题,实际上就是一个决策树的遍历过程,站在回溯树的一个节点上,你只需要思考 3 个问题:

  1. 路径:也就是已经做出的选择。
  2. 选择列表:也就是你当前可以做的选择。
  3. 结束条件:也就是到达决策树底层,无法再做选择的条件。

代码框架:

result = []
def backtrack(路径, 选择列表):if 满足结束条件:result.add(路径)returnfor 选择 in 选择列表:做选择backtrack(路径, 选择列表)撤销选择

关于本体的解题思路:
我们首先在 m×nm \times nm×n 个网格内枚举起点。只要格子内的数大于 000,它就可以作为起点进行开采。

记枚举的起点为 (i,j),我们就可以从 (i,j)开始进行递归 + 回溯,枚举所有可行的开采路径。我们用递归函数 dfs(x,y,gold)\进行枚举,其中 (x,y)(x, y)(x,y) 表示当前所在的位置,gold\textit{gold}gold 表示在开采位置 (x,y)(x, y)(x,y) 之前,已经拥有的黄金数量。根据题目的要求,我们需要进行如下的步骤:

我们需要将 gold 更新为 gold+grid[x][y],表示对位置(x,y) 进行开采。由于我们的目标是最大化收益,因此我们还要维护一个最大的收益值 ans,并在这一步使用 gold\textit{gold}gold 更新ans;

我们需要枚举矿工下一步的方向。由于矿工每次可以从当前位置向上下左右四个方向走,因此我们需要依次枚举每一个方向。如果往某一个方向不会走出网格,并且走到的位置的值不为 0,我们就可以进行递归搜索;
在搜索完所有方向后,我们进行回溯。

代码

class Solution {int[][]g;int m,n;//标记已经走过的路线boolean[][]vis;//标记四个方向,矿工每到一个地方,都有四个方向可以选择.int[][]dirs = new int[][]{{1,0},{-1,0},{0,-1},{0,1}};public int getMaximumGold(int[][]gird){g = gird;m = g.length;n = g[0].length;vis = new boolean[m][n];int ans = 0;for (int i = 0; i < m;i++){for (int j = 0; j < n;j++){if (g[i][j] != 0){vis[i][j] = true;ans = Math.max(ans,dfs(i,j));vis[i][j] = false;}}}return ans;}/*** 开始回溯计算,每个点向四个方向开始移动的最大值* @param i* @param j* @return*/public int dfs(int i,int j){int ans = g[i][j];//枚举四个方向for (int[]d : dirs){int ni = i + d[0];int nj = j + d[1];if (ni < 0 || nj < 0 || ni >= m || nj >= n){continue;}if (g[ni][nj] == 0){continue;}//已经走过的不在重复计算if (vis[ni][nj]){continue;}//标记已选vis[ni][nj] = true;ans = Math.max(ans,g[i][j] + dfs(ni,nj));vis[ni][nj] = false;}return ans;}
}

回溯算法

leetcode698. 划分为k个相等的子集

leetcode93. 复原 IP 地址

leetcode306. 累加数

http://www.yayakq.cn/news/676505/

相关文章:

  • 嘉定企业网站建设wordpress文字
  • 深圳免费做网站网站架构模板
  • php网站开发防注入网站推广怎么做比较好
  • 西安公司网站制作价格手机网站商场建设
  • 有哪些网站结构是不合理的沈阳网站seo排名优化
  • 自建网站 备案土人景观设计公司官网
  • 网站网站制作多少钱淄博有做网站的吗
  • 合肥教育网站建设创新的专业网站建设
  • 百度seo优化网站怎么做google网站怎么做流量
  • 北京公司公示在哪个网站新品发布会流程方案
  • 深圳网站关键词排名优化深圳福田区天气
  • 网站设计主题中文网站促销计算
  • 网站客户案例张梅 合肥网站建设
  • 网站建设会遇到哪些问题网站导航类型
  • 做网站数据库怎么建房地产开发公司名字大全
  • 网站自己的腾讯云网站托管
  • 教育培训类网站建设模板徐汇做网站公司
  • 做外单网站亚马逊济南建设职业技术学院
  • 网站前台设计及开发是做什么的wordpress登录后可见
  • 搜索引擎网站推广定义深圳市城乡住房和建设局网站首页
  • 网站建设和钱软件推广方案
  • 利川市网站建设百度广告安装入口
  • 大学网站建设与功能开发想建设个网站
  • 网站 用户体验的重要性建设企业网站技术解决方案
  • 有关于做茗茶的网站温州推广团队
  • 中山做网站哪家便宜10秒折一把古风伞
  • 做公司网站需要准备什么科目水文站网站建设应当坚持
  • 网站开发专业的wordpress 中文图片
  • 怎么做cc网站宣传 网站建设方案
  • 上海城乡建设学校网站股票订阅网站开发