力扣 1219黄金矿工

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

题目

你要开发一座金矿,地质勘测学家已经探明了这座金矿中的资源分布,并用大小为 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 个单元格中有黄金。

解释和代码

第一眼感觉就是dfs

注意题意,可以从网格中 任意一个 有黄金的单元格出发或者是停止

没什么难度,就是直接模拟即可,注意边界

网上代码都差不多的样子

class Solution {
public:
    int maxv = 0, tsum = 0;
    int dx[4] = {0, 0, 1, -1};
    int dy[4] = {1, -1, 0, 0};
    
    void dfs(int tx, int ty, vector<vector<int>>& grid) {
        if (tx < 0 || ty < 0 || tx >= grid.size() || ty >= grid[0].size() || grid[tx][ty] == 0) return ;
        int temp = grid[tx][ty];
        tsum += temp;
        maxv = max(maxv, tsum);
        grid[tx][ty] = 0;
        for (int i=0; i<4; i++) {
            int px = tx + dx[i];
            int py = ty + dy[i];
            dfs(px, py, grid);
        }
        grid[tx][ty] = temp;
        tsum -= temp;
    }
    
    int getMaximumGold(vector<vector<int>>& grid) {
        for (int i=0; i<grid.size(); i++) 
            for (int j=0; j<grid[i].size(); j++) 
                if (grid[i][j] != 0)
                    dfs(i, j, grid);
        return maxv;
    }
};
Leetcode 1219.黄金矿工 Time: 20191006 Type: Medium 题目描述 你要开发一座金矿,地质勘测学家已经探明了这座金矿中的资源分布,并用大小为 m * n 的网格 grid 进行了标注。每个单元格中的整数就表示这一单元格中的黄金数量;如果该单元格是空的,那么就是 0。 为了使收益最大化,矿工需要按以下规则来开采黄金: 每当矿工进入一个单元,就会收集该单元格中的所有黄金。 矿工每次可以从当前位置向上下左... 阅读详情

相关推荐

【正点原子I.MX6U-MINI移植篇】Ubuntu-base根文件系统移植构建过程详解(四)

能不能在ARM板上运行Ubuntu呢?答案肯定是可以的,Ubuntu是Linux系统的一种,可以简单的将Ubuntu理解为一个根文件系统,和我们用busybox、buildroot制作的根文件系统一样。因此移植Ubuntu也就是将Ubuntu根文件系统移植到我们的开发板上。

果果小师弟的博客 3767

黄金矿工

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

weixin_41791402的博客 872

ICC2 实战秘籍:create_workspace 命令全解析

必选项:工作区名称,这可是创建工作区的 “身份证”,必不可少。技术数据选项匹配:优先考虑用 -technology 直接加载技术文件,这是获取最新、最准确技术数据的首选路径;要是已经有合适的技术库了,那 -use_technology_lib 引用现有技术库也能快速上手。精度设置优先规则:技术文件自动配置排在第一位,能自动适配就别手动操心;要是自动配置不理想,那就显式指定 scale_factor;实在没要求,就用默认配置,但得清楚它的精度限制。

weixin_50820814的博客 1124

黄金矿工问题【动态规化】

黄金矿工 很久很久以前,有一位国王拥有5座金矿,每座金矿的黄金储量不同,需要参与挖掘的工人人数也不同。例如有的金矿储量是500kg黄金,需要5个工人来挖掘;有的金矿储量是200kg黄金,需要3个工人来挖掘…如果参与挖矿的工人的总数是10。每座金矿要么全挖,要么不挖,不能派出一半人挖取一半的金矿。要求用程序求出,要想得到尽可能多的黄金,应该选择挖取哪几座金矿? 《漫画算法》 解题思路 动态规划: 对于最后的金矿,都有挖或者不挖的选项: 对比两种情况的收益,最终可得到最大收益。 ①400kg/5人②50

梦付千秋星垂野 1088

Fluent新手避坑:遇到‘Floating point exception’别慌,这7个排查步骤帮你搞定

本文为Fluent新手提供了遇到‘Floating point exception’错误时的7个详细排查步骤。从理解浮点异常的本质到边界条件检查、时间步长设置、求解器选择、网格优化、亚松弛因子调节以及高阶格式的取舍,帮助用户快速定位并解决问题,确保CFD仿真的稳定性和准确性。

weixin_30480075的博客 260

OpenClaw赚钱实录:从“养龙虾“到可持续变现的实践指南

OpenClaw已经开源3个月有余,作为深耕AI Agent领域的博主,我亲身探索了各种基于OpenClaw的赚钱方法,也踩过坑、付出了时间与精力。现在,我将这些真金白银砸出来的实战经验,毫无保留地总结成这个专栏,分享给不想从零开始摸索的你。博主在优快云已有7万+粉丝和1100万+阅读量,但这却是我的第一个付费专栏。正因如此,我比任何人都更珍惜这个“第一次”。我会像一个手艺人打磨作品一样,死磕每一篇文章的质量,并持续根据订阅者的反馈优化内容。也许你的疑问就是当篇文章的优化点。

冯·诺依曼 2441

【C++】挖金子(黄金矿工)分析与代码实现

❥思路 每个格子都可以作为开始节点,遍历找到最大数,可以直接用优先队列去模拟,或者用dfs+回溯 ❥代码 #include <iostream> #include <cstdio> #include <algorithm> #include <queue> using namespace std; struct Node { int val,zx,zy; bool operator<(const Node&e) con

米莱虾 2942

FPGA开发中的操作系统

在FPGA开发中,操作系统起着关键的作用,它负责任务管理、资源管理、中断处理和设备驱动程序等功能。在实际的FPGA开发中,可以选择使用现有的操作系统,如MicroC/OS-II、FreeRTOS等,或者根据具体需求自行设计和开发操作系统。在FPGA(可编程逻辑门阵列)开发中,操作系统扮演着关键的角色,为硬件设计师提供了一种有效的方式来管理资源、调度任务并实现系统级功能。本文将介绍FPGA开发中的操作系统概念,并提供一个简单的示例代码来说明如何在FPGA平台上实现一个基本的操作系统。

CqpFsharp的博客 1156

55 回溯算法解黄金矿工问题

如果单元格是空的,那么就是0,为了使收益最大化,矿工需按一下规则来开采黄金:每当矿工进入一个单元,就会收集该单元中的所有黄金,矿工每次可以从当前位置向上下左右四个方向走,每个单元格只能被开采一次,不能开采(进入)黄金数目为0的单元格,矿工可以从任意一个黄金的单元格出发或者停止;递归求解:外层大函数为网格循环,表示从哪一个格子开始进入,内层dfs使用used函数表征该网格是否被走过,在循环中遍历,若当前网格没有被走过,则更新used数组,进入下一个dfs中,有四种走法,若走不通直接进行添加到最大堆中。

qq_52299902的博客 540

FISCO BCOS 系列(一)—— 搭建第一个区块链网络&配置控制台指南

本文详细介绍了FISCO BCOS区块链网络的搭建与配置过程,包括环境准备、单机四节点网络搭建、控制台配置使用等核心内容。从系统要求、依赖安装开始,逐步指导如何通过脚本快速搭建区块链网络,配置控制台连接,并演示了账户管理、合约部署调用等基础操作。同时提供了多节点网络配置、常见问题解决方案以及生产环境安全建议,为开发者提供了从入门到进阶的完整指南。

分享AI、区块链技术及应用,未来已来 809

【LAMMPS学习】八、基础知识(4.5)TIP5P水模型

​ 五点 TIP5P 刚性水模型通过添加两个通常无质量的附加位点 L 来扩展three-point TIP3P model,其中放置与氧原子相关的电荷。这些位点 L 位于距氧原子固定距离处,形成从 HOH 平面旋转 90 度的四面角。因此,这些位点在某种程度上近似于氧的孤对,从而改善了水结构,与four-point TIP4P model相比变得更加“四面体”。

荷塘阅色 1421

leetcode-每日一题2022.2.5 黄金矿工

回溯

zy的博客 404

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

golang力扣leetcode 1219.黄金矿工

1219.黄金矿工1219.黄金矿工题解代码 1219.黄金矿工 1219.黄金矿工 题解 DFS+回溯,貌似大一做过,但是有个坑,见链接 代码 package main var dirs = []struct{ x, y int }{{-1, 0}, {1, 0}, {0, -1}, {0, 1}} var result int func getMaximumGold(grid [][]int) int { var dfs func(x, y, cnt int) dfs = func(x, y,

清风 765

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

leetcode 1219. 黄金矿工

leetcode 1219. 黄金矿工 文章目录leetcode 1219. 黄金矿工一、题目1.题目描述2.基础框架3.解题思路4.知识点 一、题目 原题链接:1219. 黄金矿工 1.题目描述 你要开发一座金矿,地质勘测学家已经探明了这座金矿中的资源分布,并用大小为 m * n 的网格 grid 进行了标注。每个单元格中的整数就表示这一单元格中的黄金数量;如果该单元格是空的,那么就是 0。 为了使收益最大化,矿工需要按以下规则来开采黄金: 每当矿工进入一个单元,就会收集该单元格中的所有黄金。 矿工

进击的code儿 670

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

leetcode1219. 黄金矿工(java)

记枚举的起点为 (i,j),我们就可以从 (i,j)开始进行递归 + 回溯,枚举所有可行的开采路径。我们用递归函数 dfs(x,y,gold)\进行枚举,其中 (x,y)(x, y)(x,y) 表示当前所在的位置,gold\textit{gold}gold 表示在开采位置 (x,y)(x, y)(x,y) 之前,已经拥有的黄金数量。输入:grid = [[1,0,7],[2,0,6],[3,4,5],[0,3,0],[9,0,20]]输入:grid = [[0,6,0],[5,8,7],[0,9,0]]

SP_1024的博客 810

leetcode 1219 黄金矿工

遍历grid向量,当grid[i][j]!=0时,将(i,j)作为入口,调用dfs函数,更新全局变量,探索所有的可能。可以采用来解决这个问题。

2301_80296866的博客 544

LeetCode第1219题 - 黄金矿工

LeetCode第1219题 - 黄金矿工

流水账 347

leetcode每日一题1219. 黄金矿工 DFS深搜 暴力AC 正月初五祝大家财源广进~

本篇内容:leetcode每日一题1219. 黄金矿工 DFS深搜 暴力AC 正月初五祝大家财源广进~ 文章专栏:leetcode每日一题《打卡日常》 最近更新:2022年2月4日 leetcode每日一题1725. 可以形成最大正方形的矩形数目 哈希表存储 到 贪心遍历 优化~ 个人简介:一只二本院校在读的大三程序猿,本着注重基础,打卡算法,分享技术作为个人的经验总结性的博文博主,虽然可能有时会犯懒,但是还是会坚持下去的,如果你很喜欢博文的话,建议看下面一行~(

Alascanfu的博客 267

LeetCode 1219 黄金矿工(回溯法)

class Solution { public int getMaximumGold(int[][] grid) { } } 解决: 1.哪些点可以作为起始点? 遍历数组,只要不是0的位置都可以作为起始点 2.寻找下一步位置的时候,如何判断走哪里 用一个相同大小的boolean数组来记录走过的位置**,走过的位置记为true** 3.下一个位置可以走哪里? ...

Fann 498

LeetCode1219 黄金矿工

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

雾隐雾现的至渝博客 2万+

LeetCode 1219. 黄金矿工

1219. 黄金矿工 Solution 思路:第一个想法是有点类似数塔dp的感觉,但是这里的起点是随机,而且规模不大,所以可以逐个枚举起点,然后dfs搜索即可。长时间不写,判断新点是否可行时,传入了旧的点,人麻了。 class Solution { int ans = 0; int[][] grids; int[][] dir = {{0, -1}, {0, 1}, {-...

ACMerszl的博客 244

LeetCode——1219. 黄金矿工

深搜

weixin_44750790的博客 352

dfs(基于BFS的dfs)力扣37.解数独力扣79.单词搜索力扣1219.黄金矿工力扣980.不同路径III

力扣37.解数独 力扣79.单词搜索 力扣1219.黄金矿工 力扣980.不同路径III

weixin_72953218的博客 291

leetcode 1219.黄金矿工

原题如下: https://leetcode-cn.com/problems/path-with-maximum-gold/ 题解 思路 第一次使用动态规划,以后还会继续好好学习的。 这个思路的思想就是首先找到矿工开始寻宝的起点,为了全面,我们需要遍历每一个格子,也就是说,我们需要以没一个格子为起点,找到以此格子为起点可以获得的最大金子数量,再在这些最大值里面取出最大值就为答案。 代码中的主方法的主要作用就是遍历格子,并且试着以没一个格子为起点。下面的方法void kaishizou() 视为找寻以某一个

zhuruihe2014的博客 319

LeetCode:1219. 黄金矿工————中等

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

Kinght_123的博客 282
上一篇: 力扣 1189“气球” 的最大数量
下一篇: 力扣 1380矩阵中的幸运数
霜序0.2℃
博客等级 码龄7年 327粉丝 278原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值