529. 扫雷游戏 DFS

news/2024/11/7 3:35:32/

529. 扫雷游戏

2020/8/20每日一题打卡√

题目描述

在这里插入图片描述

解题思路

感觉这个题最难的点还是在于理解题意和样例
理解了之后就很明确了,就是正常的DFS
如果点击了雷,就爆炸
如果没点到雷,就判断这个位置旁边有没有雷;如果有雷,把这个位置设置成周围雷的数量
如果没有雷,把这个位置标记成B,然后递归的标记标记位置周围的位置

 /** 529. 扫雷游戏* 2020/8/20* medium*/public char[][] updateBoard(char[][] board, int[] click) {int x = click[0],y = click[1];if(board[x][y] == 'M') {//如果选中了地雷board[x][y] = 'X';}else if(board[x][y] == 'E') { //如果选中的空方快,递归的修改其它方块dfsUpdateBoard(board,x,y,board.length,board[0].length);}return board;}public void dfsUpdateBoard(char[][] board,int x,int y,int m,int n) {//8个方向int xShift[] = {-1,-1,-1,0,0,1,1,1};int yShift[] = {-1,0,1,-1,1,-1,0,1};//如果不满足条件直接返回if(x < 0 || x >= m || y < 0 || y >= n || board[x][y] != 'E') {return;}//统计这个节点周围有多少个地雷int count = 0;for (int i = 0; i < yShift.length; i++) {int xx = x + xShift[i];int yy = y + yShift[i];if(xx >= 0 && xx < m && yy >= 0 && yy < n && board[xx][yy] == 'M') {count++;}}//如果四周没有地雷,修改这个节点的值,并递归的点击四周if(count == 0) {board[x][y] = 'B';for (int i = 0; i < yShift.length; i++) {int xx = x + xShift[i];int yy = y + yShift[i];if(xx >= 0 && xx < m && yy >= 0 && yy < n && board[xx][yy] == 'E') {dfsUpdateBoard(board,xx,yy,m,n);}}}else {//如果和地雷相邻,修改距离board[x][y] = (char) (count + '0');}}

在这里插入图片描述


http://www.ppmy.cn/news/884491.html

相关文章

uva 529 - Addition Chains

此题使用迭代加深搜索。。 注意:1.首先确定最少的步数 2.剪枝:获得当前数t之后。。。看 t * 2(的maxd -d次方)能不能大于n&#xff0c;反之则不用再dfs下去了。 // // main.cpp // uva 529 - Addition Chains // // Created by XD on 15/8/8. // Copyright (c) 2015年…

【ID搜索】uva529Addition Chains

题目描述&#xff1a;对于一个数列{a}&#xff0c;任意一个数都比前面的数大&#xff0c;且是前面任意两个数&#xff08;可以是同一个数&#xff09;之和。a01。求得到n的最短数列&#xff08;最优解不为一&#xff09;。 样例&#xff1a; 输入 5 7 12 15 77 0 输出…

java 中\u767b\u5f55\u6210\u529f编码转成明文

new String("\u767b\u5f55\u6210\u529f".getBytes(),"utf-8") 如果不是utf-8&#xff0c;则可以替换成 unicode

[VRFC 10-529] concurrent assignment to a non-net an is not permitted [C:/Users/chenxy/Desktop/digit

[VRFC 10-529] concurrent assignment to a non-net an is not permitted ["C:/Users/chenxy/Desktop/digit&#xff0c; 这个错误的意思是&#xff0c;对一个非网口类型的 an 同时赋值是不被允许的&#xff0c;也就是说&#xff0c;你在多个模块里都存在对an赋值的情况&…

leetcode:529. 扫雷游戏【节点分类,dfs,越界,分类判断,例题】

分析 1.八个方向找地雷 2.越界判断 3.当前是否是地雷计数1or0 4.当前节点的八个周边有几个雷 5.dfs节点&#xff0c;若越界or不是E就返回了&#xff0c;否则看地雷数&#xff1b;若没有地雷&#xff0c;则标志B&#xff0c;并dfs&#xff1b;否则标记地雷数 6.外部&#xff0c…

529day(ajax-post.html)

《2019年3月17日》【连续529天】 标题&#xff1a;ajax-post.html&#xff1b; 内容&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>AJAX发送POST请求</title><style>#loa…

LC.529. 扫雷游戏(DFS)

LC.529. 扫雷游戏(DFS) 思路: d f s dfs dfs即可&#xff0c;需要注意的是这里的相邻是 8 8 8连通。 class Solution { public:int sx,sy,vis[55][55],n,m;//int d[4][2]{0,1,0,-1,1,0,-1,0};int d[8][2]{0,1,0,-1,1,0,-1,0,1,1,1,-1,-1,-1,-1,1};bool jg(int x,int y){retur…

LeetCode 529. Minesweeper 解题报告(python)

529. Minesweeper Fizz Buzz Multithreaded python solution 题目描述 Let’s play the minesweeper game (Wikipedia, online game)! You are given a 2D char matrix representing the game board. ‘M’ represents an unrevealed mine, ‘E’ represents an unrevealed…