当前位置:网站首页>模拟卷Leetcode【普通】1219. 黄金矿工
模拟卷Leetcode【普通】1219. 黄金矿工
2022-07-06 06:15:00 【邂逅模拟卷】
汇总:模拟卷Leetcode 题解汇总
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 个单元格中有黄金。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/path-with-maximum-gold
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
代码:
from leetcode_python.utils import *
class Solution:
def __init__(self):
self.res = 0
@lru_cache(None)
def next(self,rowid,colid):
res = []
for i, j in ((rowid - 1, colid), (rowid, colid - 1), (rowid + 1, colid), (rowid, colid + 1)):
if 0 <= i < self.height and 0 <= j < self.width:
res.append([i, j])
return res
def dfs(self,r,c,now):
g = self.grid[r][c]
now+=g
self.res = max(self.res,now)
self.grid[r][c]=0
for nextr,nextc in self.next(r,c):
if self.grid[nextr][nextc]:
self.dfs(nextr,nextc,now)
self.grid[r][c]=g
def getMaximumGold(self, grid: List[List[int]]) -> int:
self.grid = grid
self.height,self.width = len(grid), len(grid[0])
for i in range(self.height):
for j in range(self.width):
if grid[i][j]:
self.dfs(i,j,0)
return self.res
def test(data_test):
s = Solution()
data = data_test # normal
# data = [list2node(data_test[0])] # list转node
return s.getMaximumGold(*data)
def test_obj(data_test):
result = [None]
obj = Solution(*data_test[1][0])
for fun, data in zip(data_test[0][1::], data_test[1][1::]):
if data:
res = obj.__getattribute__(fun)(*data)
else:
res = obj.__getattribute__(fun)()
result.append(res)
return result
if __name__ == '__main__':
datas = [
[
[[0,6,0],[5,8,7],[0,9,0]]],
]
for data_test in datas:
t0 = time.time()
print('-' * 50)
print('input:', data_test)
print('output:', test(data_test))
print(f'use time:{
time.time() - t0}s')
备注:
GitHub:https://github.com/monijuan/leetcode_python
CSDN汇总:模拟卷Leetcode 题解汇总
可以加QQ群交流:1092754609
leetcode_python.utils详见汇总页说明
先刷的题,之后用脚本生成的blog,如果有错请留言,我看到了会修改的!谢谢!
边栏推荐
- Buuctf-[[gwctf 2019] I have a database (xiaoyute detailed explanation)
- LeetCode 731. 我的日程安排表 II
- Summary of anomaly detection methods
- 调用链监控Zipkin、sleuth搭建与整合
- 测试周期被压缩?教你9个方法去应对
- B - The Suspects
- Amazon Engineer: eight important experiences I learned in my career
- [API interface tool] Introduction to postman interface
- 10M25DCF484C8G(FPGA) AMY-6M-0002 BGA GPS模块
- D - How Many Answers Are Wrong
猜你喜欢
[postman] collections configuration running process
F - true liars (category and search set +dp)
曼哈顿距离与曼哈顿矩形-打印回字型矩阵
Manhattan distance and Manhattan rectangle - print back font matrix
ICLR 2022 spotlight | analog transformer: time series anomaly detection method based on correlation difference
[C language] string left rotation
Win10 cannot operate (delete, cut) files
Nodejs realizes the third-party login of Weibo
MySQL之数据类型
win10无法操作(删除、剪切)文件
随机推荐
GTSAM中李群的运用
Idea new UI usage
Construction and integration of Zipkin and sleuth for call chain monitoring
Manhattan distance sum - print diamond
多线程应用的测试与调试
JWT-JSON WEB TOKEN
黑猫带你学eMMC协议第10篇:eMMC读写操作详解(read & write)
Database isolation level
Commodity price visualization
Win10 cannot operate (delete, cut) files
数字三角形模型 AcWing 1015. 摘花生
Réflexions sur la sécurité des données (réimpression)
Left matching principle of joint index
把el-tree选中的数组转换为数组对象
Clock in during winter vacation
Accélération de la lecture vidéo de l'entreprise
Cannot create PoolableConnectionFactory (Could not create connection to database server. 错误
Configuring OSPF GR features for Huawei devices
对数据安全的思考(转载)
Understanding of processes and threads