leetcode529. 扫雷游戏(dfs)

让我们一起来玩扫雷游戏!

给定一个代表游戏板的二维字符矩阵。 ‘M’ 代表一个未挖出的地雷,‘E’ 代表一个未挖出的空方块,‘B’ 代表没有相邻(上,下,左,右,和所有4个对角线)地雷的已挖出的空白方块,数字(‘1’ 到 ‘8’)表示有多少地雷与这块已挖出的方块相邻,‘X’ 则表示一个已挖出的地雷。

现在给出在所有未挖出的方块中(‘M’或者’E’)的下一个点击位置(行和列索引),根据以下规则,返回相应位置被点击后对应的面板:

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

示例 1:

输入:

[[‘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’]]

代码

class Solution {public char[][] updateBoard(char[][] board, int[] click) {int[][] dir=new int[][]{{-1,0},{1,0},{0,1},{0,-1},{1,1},{1,-1},{-1,1},{-1,-1}};if(board[click[0]][click[1]]=='M')board[click[0]][click[1]]='X';else  if(board[click[0]][click[1]]=='E')update(board,click[0],click[1],dir);return board;}public void update(char[][] board, int x,int y,int[][] dir) {int sum=0;for(int[] d:dir)//检查周围有没有地雷{int nextX=d[0]+x,nextY=d[1]+y;if(nextX<0||nextY>=board[0].length||nextY<0||nextX>=board.length) continue;if(board[nextX][nextY]=='M') sum++;}if(sum==0) board[x][y]='B';else {//有地雷就停止遍历并且改变boardboard[x][y]=(char)( sum+'0');return;}for(int[] d:dir)//继续遍历可能的路径{int nextX=d[0]+x,nextY=d[1]+y;if(nextX<0||nextY>=board[0].length||nextY<0||nextX>=board.length||board[nextX][nextY]!='E') continue;update(board, nextX, nextY, dir);}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/394177.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

redhat6 删除mysql_Red Hat enterprise linux 6卸载默认安装的 mysql

因为Red Hat enterprise linux 6 自带了一个mysql&#xff0c;所以当你安装新的mysql时&#xff0c;就会提示错误如&#xff1a;error&#xff1a;Failed dependencies&#xff1a;MySQL conflicts with mysql-5.1.47-4.el6.i686rmp -qa mysql 可以看到安装的mysql于是将自带的…

swift通知栏推送_如何使用Swift使用推送通知构建食品交付应用

swift通知栏推送by Neo Ighodaro由新Ighodaro 如何使用Swift使用推送通知构建食品交付应用 (How to build a food delivery app with push notifications using Swift) A basic understanding of Swift and Node.js is needed to follow this tutorial.要学习本教程&#xff0…

Jenkins持续集成实践之java项目自动化部署

关于Linux安装Jenkins可以参考我的这篇博文Ubuntu16.04环境安装jenkins 1.安装部署插件 进入插件管理&#xff0c;并搜索该插件Deploy to container Plugin进行安装 &#xff0c;下载地址为&#xff1a;https://wiki.jenkins-ci.org/display/JENKINS/DeployPlugin 2.安装完后&a…

云计算时代企业内部IT人员的新定位

本文讲的是云计算时代企业内部IT人员的新定位&#xff0c;【IT168 云计算频道】渐渐的云计算热起来&#xff0c;但是怎么去严格定义云计算&#xff0c;还是没有一个统一的说法&#xff0c;最常用的就是举例子的方式来说什么是云计算&#xff0c;最常用来打比方的是电力&#xf…

Java 多线程 笔记 转自http://www.cnblogs.com/lwbqqyumidi/p/3804883.html

多线程作为Java中很重要的一个知识点&#xff0c; 一.线程的生命周期及五种基本状态 关于Java中线程的生命周期&#xff0c;首先看一下下面这张较为经典的图&#xff1a; 上图中基本上囊括了Java中多线程各重要知识点。掌握了上图中的各知识点&#xff0c;Java中的多线程也就基…

leetcode207. 课程表(dfs/bfs)

你这个学期必须选修 numCourse 门课程&#xff0c;记为 0 到 numCourse-1 。 在选修某些课程之前需要一些先修课程。 例如&#xff0c;想要学习课程 0 &#xff0c;你需要先完成课程 1 &#xff0c;我们用一个匹配来表示他们&#xff1a;[0,1] 给定课程总量以及它们的先决条件…

r.java是什么_R.java文件介绍

http://blog.chinaunix.net/uid-21411227-id-4133828.html注意&#xff1a;R.java文件不能手动修改。1. HelloWorld工程中的R.java文件解析package com.android.hellworld;public final class R {public static final class attr {}public static final class drawable {public…

python qt 拖拽组件使用方法_Python QT组件库qtwidgets的使用

虽然Qt提供了不少现成的组件&#xff0c;但是在Python中使用PyQt5或PySide2进行图形界面程序开发的过程&#xff0c;还是免不了要根据自己的需求组合一些小部件以形成新的自定义组件。最近州的先生在写一个桌面图形界面的登录密码框的过程中&#xff0c;发现了这样一个小巧的自…

get与post区别

两种 HTTP 请求方法&#xff1a;GET 和 POST 在客户机和服务器之间进行请求-响应时&#xff0c;两种最常被用到的方法是&#xff1a;GET 和 POST。 GET - 从指定的资源请求数据。POST - 向指定的资源提交要被处理的数据GET 方法 请注意&#xff0c;查询字符串&#xff08;名称/…

java 实现 sql join_Sql 数据库 join 连接

sql里面有两个连接一个是union&#xff0c;另一个就是join他们两个的区别:union 连接的是行 是一行一行的连 而 join 连接的是列(字段) (他们俩的区别暂时就就知道这点)join连接的使用的前提:1.必须要有至少一个表(一个表可以用自连接)2.必须要有相关联的列(字段)&#xff…

开源与云计算

本文讲的是开源与云计算&#xff0c;【IT168 资讯】几年来我一直担心开源运动可能会遭受Kim Stanley Robinson在“Green Mars”中精辟论述的问题&#xff1a;“历史的浪潮比我们做得还要快。”创新者被抛在后面&#xff0c;他们曾经改变的世界拿着他们的主意向着意想不到的方向…

c/c++连接mysql数据库设置及乱码问题(vs2013连接mysql数据库,使用Mysql API操作数据库)...

我的安装环境&#xff1a; (1)vs2013(32位版) (vs2013只有32位的 没有64位的&#xff0c;但是它可以编译出64位的程序) &#xff1b; (2)mysql-5.7.15(64位) vs2013中的设置&#xff08;按步骤来&#xff0c;顺序不要乱&#xff09; (1)首先在vs2013中新建一个控制台程序 Mysq…

leetcode542. 01 矩阵(bfs/dp)

给定一个由 0 和 1 组成的矩阵&#xff0c;找出每个元素到最近的 0 的距离。 两个相邻元素间的距离为 1 。 示例 1: 输入: 0 0 0 0 1 0 0 0 0 输出: 0 0 0 0 1 0 0 0 0 bfs代码 class Solution {int[][] res;public int[][] updateMatrix(int[][] matrix) {int[][] dirnew…

react本地储存_如何使用React和本地存储构建freeCodeCamp的配方框

react本地储存by Edward Njoroge爱德华尼约格(Edward Njoroge) 如何使用React和本地存储构建freeCodeCamp的配方框 (How to build freeCodeCamp’s recipe box using React and local storage) I completed my first edition of the Free Code Camp recipe box project on May…

调用接口返回500_公交卡余额查询接口开放使用啦!

API说明本API返回数据仅支持JSON格式且会对中文进 行unicode 编码&#xff0c;JSON格式返回数据基本格式如下&#xff1a;{"errCode": 0,"errMsg": "OK","data": {}}其中 errCode 表示请求状态&#xff0c;0表示请求成功&#xff0c; …

stark组件开发之组合搜索基本显示

数据的获取&#xff0c;上一篇&#xff0c;已经有了&#xff01;然后就是&#xff0c;如何进行展示的问题。到了展示这里&#xff0c;又有了新的问题&#xff0c; 因为从数据库&#xff0c;取得的数据。 分为 queryset 和 tuple 两种数据结构。tuple 中&#xff0c;只是字符串。…

美国安全厂商在云安全上的最新进展

本文讲的是美国安全厂商在云安全上的最新进展&#xff0c;【IT168 资讯】优利系统公司日前推出了一系列云产品和服务&#xff0c;并且着重强调企业创建私有云&#xff0c;公有云或混合云工具的安全。  Unisys Secure Cloud是优利系统公司推出的一种管理云服务&#xff0c;承诺…

hessianphp java_hessian 在PHP中的使用

一、hessian是什么&#xff1f;看到这个单词我还不知道怎么读&#xff0c;音标是[hes]读黑森。Hessian是一个轻量级的远程的数据交换工具&#xff0c;使用简单的方法提供了RMI(远程方法调用)的功能. 相比WebService&#xff0c;Hessian更简单、快捷。采用的是二进制RPC协议&…

leetcode1025. 除数博弈(dp/数学)

爱丽丝和鲍勃一起玩游戏&#xff0c;他们轮流行动。爱丽丝先手开局。 最初&#xff0c;黑板上有一个数字 N 。在每个玩家的回合&#xff0c;玩家需要执行以下操作&#xff1a; 选出任一 x&#xff0c;满足 0 < x < N 且 N % x 0 。 用 N - x 替换黑板上的数字 N 。 如…

100万用户服务器_我的应用在一个月内如何增长超过100万用户

100万用户服务器by Assaf Elovic通过阿萨夫埃洛维奇 我的应用在一个月内如何增长超过100万用户 (How my app grew by over 1M users in one month) 只需要这种简单的每周方法和耐心。 (All it took was this simple weekly approach and patience.) Building and promoting a …