dfs+回溯 46/51 还是超时 almost

class Solution:def getMaximumGold(self, grid: List[List[int]]) -> int:# bfs不同的起点?ans = 0m = len(grid)n = len(grid[0])def dfs(pos, sum):nonlocal ansnonlocal visitx, y = possum += grid[x][y]if sum > ans:#print(sum)ans = sumvisit[x][y] = True# record the visitmyVisit = copy.deepcopy(visit)X = [-1, 0, 1, 0]Y = [0, -1, 0 ,1]for i in range(4):nextX = x + X[i]nextY = y + Y[i]#print(nextX, nextY)if 0 <= nextX < m and 0 <= nextY < n and grid[nextX][nextY] != 0 and visit[nextX][nextY] is False:dfs([nextX, nextY], sum)# 回溯visit = copy.deepcopy(myVisit)#sum = 0for i in range(m):for j in range(n):if grid[i][j] == 0:continue#sum += grid[i][j]visit = [[False] * n for _ in range(m)]dfs([i, j], 0)#print(sum)return ans

正确做法:不用visit
因为用了visit之后回溯的非常慢,要把dfs更改的visit全部去掉
这里采用原地修改的方法为0的方法封路,遍历完四个方向之后解除封锁

class Solution:def getMaximumGold(self, grid: List[List[int]]) -> int:# bfs不同的起点?ans = 0m = len(grid)n = len(grid[0])def bfs(pos, sum):nonlocal ansnonlocal visitx, y = possum += grid[x][y]if sum > ans:#print(sum)ans = sumvisit[x][y] = True# record the visitmyVisit = copy.deepcopy(visit)X = [-1, 0, 1, 0]Y = [0, -1, 0 ,1]for i in range(4):nextX = x + X[i]nextY = y + Y[i]#print(nextX, nextY)if 0 <= nextX < m and 0 <= nextY < n and grid[nextX][nextY] != 0 and visit[nextX][nextY] is False:bfs([nextX, nextY], sum)# 回溯visit = copy.deepcopy(myVisit)#sum = 0for i in range(m):for j in range(n):if grid[i][j] == 0:continue#sum += grid[i][j]visit = [[False] * n for _ in range(m)]bfs([i, j], 0)#print(sum)return ans

总结:
回溯不一定要更改visit数组
可以原地修改成封锁的路,后面dfs完上下左右再解封!

leetcode:黄金矿工相关推荐

  1. LeetCode:1219.黄金矿工(Java语言)

    不要自卑,去提升实力 互联网行业谁技术牛谁是爹 如果文章可以带给你能量,那是最好的事!请相信自己 加油o~ 1219.黄金矿工 你要开发一座金矿,地质勘测学家已经探明了这座金矿中的资源分布,并用大小为 ...

  2. 黄金矿工--回溯算法

    LeetCode 1219 黄金矿工 你要开发一座金矿,地质勘测学家已经探明了这座金矿中的资源分布,并用大小为 m * n 的网格 grid 进行了标注.每个单元格中的整数就表示这一单元格中的黄金数量 ...

  3. 黄金矿工游戏demo

    试玩地址:  http://www.adanghome.com/js_demo/13/ 请使用chrome.firefox或safari.ie的话,请大于ie8. 按空格键扔出钩子,按左右键控制矿工移 ...

  4. 2018级C语言大作业 - 黄金矿工

    黄金矿工 C语言作业 分享18级同学大一上学期用C语言实现的黄金矿工.分步骤代码.图片音乐素材.可执行程序可从百度网盘下载: 链接:https://pan.baidu.com/s/1xCy1l2-7Q ...

  5. 【源码+教程】Java课设项目_12款最热最新Java游戏项目_Java游戏开发_Java小游戏_飞翔的小鸟_王者荣耀_超级玛丽_推箱子_黄金矿工_贪吃蛇

    马上就要期末了,同学们课设做的如何了呢?本篇为大家带来了12款热门Java小游戏项目的源码和教程,助力大家顺利迎接暑假![源码+教程]Java课设项目_12款最热最新Java游戏项目_Java游戏开发 ...

  6. 你的记忆里有黄金矿工吗?

    黄金矿工是大概是我初中时候玩的游戏吧,记忆中的样子是一群人围在一个电脑傍边,两人一组,输了就换下一组,虽然它不上现在游戏的丰富的游戏内容.但是就是让人欲罢不能,成为一款经典! Java游戏项目黄金矿工 ...

  7. 项目二 黄金矿工 1

    黄金矿工 第一部分 1 绘制窗口 2 背景绘制 3 红线绘制 4 线的延长和收回 6 金块绘制 7 闪动问题解决 8 抓取判定与返回 9 添加多个金块 10 解决金块消失的bug 11 创建石块类 第 ...

  8. Java练手小游戏---黄金矿工

    你玩过4399曾经最火的黄金矿工小游戏吗,黄金矿工小游戏是一款休闲娱乐的一个挖宝游戏,在游戏中地下会有许多的宝藏,你得想办法把它们都挖出来,作为矿工的你,对你来说是轻车熟路的,能不能挖到宝,看你抓取的 ...

  9. 【小游戏】2D游戏黄金矿工GoldMiner(关卡模式)

    难度系数: ★★★☆☆ 游戏玩法: 黄金矿工,在恰当的时机点击屏幕放出钩子捡金块 项目简介: 功能完善,关卡模式,适合初中级练手学习 本文内容: 简单记录一下主要代码逻辑 转向机钩子的逻辑设定 1.钩 ...

最新文章

  1. xunsearch php,GitHub - ziyueit/xunsearch: 迅搜的一个PHP封装类
  2. 20145204 《Java程序设计》第6周学习总结
  3. 曝台积电芯片要涨价:2022年至少上调10%
  4. TFLearn MNIST
  5. SAP Fiori应用里的get org sales target
  6. Renascence架构原理——最优化算法
  7. 关于“收获”啰嗦几句。
  8. pmp思维导图 第六版_PMP考试技巧攻略(上)
  9. flash 火狐总是崩溃_win10系统火狐flash插件总是崩溃的解决方法
  10. java计算两个时间段的重合天数
  11. 【PowerShell】PS中 the fuck 插件(PoShFuck)将 wtf 搜索引擎从 Google 改为 Baidu 或者 Bing
  12. ios 初体验窗口的创建
  13. Android PDF文件阅读方案
  14. 网上书城_前端动态加载类别and书籍显示
  15. Win10远程控制别人电脑的操作方法
  16. [今日阅读] [TSE 2019] - Mining Fix Patterns for FindBugs Violations
  17. 魅族x8详细打开usb调试模式的方法
  18. SAP 批次管理(批次策略)
  19. java获取时间00:00:00和23:59:59
  20. 用友U8采购暂估案例教程2单到回冲

热门文章

  1. 5G加油站,需要中频段
  2. 江南大学计算机有博士点吗,江南大学博士点具体是哪些啊?
  3. 深度神经网络和传统神经网络区别
  4. S7-1200工作原理
  5. android activity管理机制,使用弱引用的activity栈管理机制
  6. CSDN夏令营初体验:优麒麟在线中英文字典
  7. 测试开发工作者日记:2020.11.27
  8. jieba.analyse的使用:提取关键字
  9. python 图像处理 角点检测算法 Harris和Shi-tomasi
  10. PDF格式分析(二十二)书签 outlines