题目条件:

1、如果一个地雷(‘M’)被挖出,游戏就结束了- 把它改为 ‘X’。
2、如果一个没有相邻地雷的空方块(‘E’)被挖出,修改它为(‘B’),并且所有和其相邻的未挖出方块都应该被递归地揭露。
3、如果一个至少与一个地雷相邻的空方块(‘E’)被挖出,修改它为数字(‘1’到’8’),表示相邻地雷的数量。
4、如果在此次点击中,若无更多方块可被揭露,则返回面板。

输入:

[[‘E’, ‘E’, ‘E’, ‘E’, ‘E’],
[‘E’, ‘E’, ‘M’, ‘E’, ‘E’],
[‘E’, ‘E’, ‘E’, ‘E’, ‘E’],
[‘E’, ‘E’, ‘E’, ‘E’, ‘E’]]

Click : [3,0]

输出:

[[‘B’, ‘1’, ‘E’, ‘1’, ‘B’],
[‘B’, ‘1’, ‘M’, ‘1’, ‘B’],
[‘B’, ‘1’, ‘1’, ‘1’, ‘B’],
[‘B’, ‘B’, ‘B’, ‘B’, ‘B’]]

分析都在图中:

给出BFS代码:

public void bfs(char[][] board, int x, int y) {Queue<int[]> q = new LinkedList<>();q.offer(new int[] { x, y });boolean v[][] = new boolean[board.length][board[0].length];v[x][y] = true;while (!q.isEmpty()) {int cnt = 0;int pos[] = q.poll();// 先判断周围八个方向的格子for (int k = 0; k < 8; k++) {int newX = pos[0] + dx[k];int newY = pos[1] + dy[k];if (newX < 0 || newY < 0 || newX >= board.length || newY >= board[0].length) {continue;}if (board[newX][newY] == 'M') {cnt++;}}if (cnt > 0) {// 周围有雷,直接修改board[pos[0]][pos[1]] = (char) (cnt + '0');} else {// 说明周围没雷board[pos[0]][pos[1]] = 'B';for (int k = 0; k < 8; k++) {int newX = pos[0] + dx[k];int newY = pos[1] + dy[k];// 不是E不需要访问,或者已经在访问队列q中了if (newX < 0 || newY < 0 || newX >= board.length || newY >= board[0].length|| board[newX][newY] != 'E' || v[newX][newY]) {continue;}q.offer(new int[] { newX, newY });v[newX][newY] = true;}}}}

给出DFS代码:

int cnt = 0;for (int i = 0; i < 8; i++) {int tx = x + dx[i];int ty = y + dy[i];if (tx < 0 || ty < 0 || tx > board.length || ty > board[0].length) {continue;}if (board[tx][ty] == 'M') {cnt++;}}if (cnt > 0) {board[x][y] = (char) (cnt + '0');return;} else {board[x][y] = 'B';for (int i = 0; i < 8; i++) {int tx = x + dx[i];int ty = y + dy[i];if (tx < 0 || ty < 0 || tx > board.length || ty > board[0].length || board[tx][ty] != 'E') {continue;}dfs(board, tx, ty);}}

力扣529.扫雷游戏相关推荐

  1. LeetCode 力扣 529. 扫雷游戏 minesweeper DFS

    大家觉得写还可以,可以点赞.收藏.关注一下吧! 也可以到我的个人博客参观一下,估计近几年都会一直更新!和我做个朋友吧!https://motongxue.cn 文章目录 529. 扫雷游戏 题目描述 ...

  2. leetcode: 529. 扫雷游戏

    529. 扫雷游戏 来源:力扣(LeetCode) 链接: https://leetcode.cn/problems/number-of-islands/ 让我们一起来玩扫雷游戏! 给你一个大小为 m ...

  3. python扫雷 广度优先_Leetcode之广度优先搜索(BFS)专题-529. 扫雷游戏(Minesweeper)...

    Leetcode之广度优先搜索(BFS)专题-529. 扫雷游戏(Minesweeper) BFS入门详解:Leetcode之广度优先搜索(BFS)专题-429. N叉树的层序遍历(N-ary Tre ...

  4. 力扣174. 地下城游戏

    力扣174. 地下城游戏 文章目录 力扣174. 地下城游戏 一.题目描述 二.分析 三.完整代码 一.题目描述 二.分析 这个题一看就可以用动态规划,就需要确定动态规划的状态和选择以及状态转移方程 ...

  5. LeetCode55跳跃游戏//力扣55跳跃游戏(贪心)

    LeetCode55跳跃游戏//力扣55跳跃游戏(贪心) 来源:力扣(LeetCode) 链接:题目跳转 给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 . 数组中的每个元素代表你在该 ...

  6. 力扣——174.地下城游戏(困难难度)——万能的递归与动态分析

    力扣--174. 地下城游戏 一.算法目录合集 1.地址 2.说明 二.题目说明 1.题干 2.原地址 三.实现步骤 1.思路分析 1.1.分析问题 1.2.具体步骤 ① 特殊情况分析 ② 常规分析 ...

  7. 力扣55.跳跃游戏(比较简单)

    文章目录 力扣55.跳跃游戏(比较简单) 题目描述 算法思路 代码实现 力扣55.跳跃游戏(比较简单) 题目描述 给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 . 数组中的每个元素代 ...

  8. LeetCode 529. 扫雷游戏(广度优先搜索BFS/深度优先搜索DFS)

    文章目录 1. 题目 2. 解题 2.1 BFS 2.2 DFS 1. 题目 让我们一起来玩扫雷游戏! 给定一个代表游戏板的二维字符矩阵. 'M' 代表一个未挖出的地雷, 'E' 代表一个未挖出的空方 ...

  9. 力扣 -- 174. 地下城游戏

    题目链接:174. 地下城游戏 - 力扣(LeetCode) 下面是用动态规划的思想解决这道题的过程,相信各位小伙伴都能看懂并且掌握这道经典的动规题目滴. 参考代码: class Solution { ...

最新文章

  1. PNAS-2018-根系分泌物香豆素调控微生物群落结构并促进植物健康
  2. 最大功率28W,高通新一代快充技术QC4.0曝光
  3. 白话Elasticsearch65-最少master候选节点以及ES集群脑裂问题
  4. 以无代码的方式将Form打印内容转成生成PDF文件
  5. 机器学习-集成学习-梯度提升决策树(GBDT)
  6. 通过栈(Stack)实现对树的遍历
  7. 常识知识在AI不同领域应用的最新研究进展
  8. 02.友盟项目--原始日志数据生成
  9. 谷粒商城:Oss endpoint can‘t be empty.
  10. python怎么让图片旋转45度_是否有方法将matplotlib打印旋转45度?
  11. 自定义Angular服务
  12. (一)UDPSocket 服务端编写(超详细)
  13. 工业AI落地场景案例实战,飞桨EasyDL让工业更智能
  14. 如何制作纯文字视频快闪视频
  15. Azure kinect (五)人体跟踪器报错解决,第一次成功运行(持续更新中)
  16. End-to-end/hand-crafted的含义(深度学习)
  17. 交换机最多可以接几个_【技术】详解一个交换机能带动多少个网络监控摄像头?...
  18. 计算机审计体会论文,审计论文格式_计算机审计实验报告_审计论文范文3000字
  19. INE上线BiKi,开启“充值领空投+最少买入,也拿万元锦鲤”活动
  20. GestureOverlayView

热门文章

  1. java怎么获取中文首字母_Java如何获取中文拼音首字母的方法介绍
  2. Quartz是一个任务调度
  3. Codeforces340B Maximal Area Quadrilateral
  4. 从零开始学习springBoot(Contextpath+修改默认idk)
  5. [10.2模拟] book
  6. 避免Gson使用时将一些字符自动转换为Unicode转义字符
  7. 数据库的持续集成和版本控制[转自INFOQ]
  8. 考清华计算机研究生数学看什么,一位考上清华计算机研究生的悲壮历程(数学考了满分).doc...
  9. 多少秒算长镜头_你了解植保无人机一天到底能够干多少活吗??
  10. 西门子em235模块的功能_图文讲解PLC模拟量模块与传感器接线方法和注意事项