(M)DFS:529. Minesweeper
来源:互联网 发布:unturned mac 编辑:程序博客网 时间:2024/04/30 01:01
扫雷游戏。
给定2维字符矩阵board,'M'表示未挖到的地雷,'E'表示未挖到的空地。'B'表示已经挖到的、四周(上下左右以及对角线)没有地雷的空地。数字'1'到'8'表示四周包含相应数字的地雷,'X'表示挖到地雷。
给定下一次鼠标点击的位置(只在'M'或者'E'处点击),根据如下规则返回点击之后的board:
如果挖到'M',则将其变成'X',游戏结束
如果挖到四周没有地雷的'E',将其变成'B',并递归地挖开其相邻无雷区域
如果挖到四周包含地雷的'E',将其替换为四周地雷的数目
做法:首先判断点击的这个位置是否是M,如果是的话直接变成X。
如果这个位置是E,遍历这个位置周围的八个位置,计算这八个位置中M的个数cnt。如果cnt不为0,直接把cnt变成字符填入,如果cnt为0,对这个位置周围的八个位置递归调用此函数。
class Solution {public: vector<vector<char>> updateBoard(vector<vector<char>>& board, vector<int>& click) { if (board.empty() || board[0].empty()) return {}; int x = click[0]; int y = click[1]; if(board[x][y] == 'M') board[x][y] = 'X'; else { int m = 0, n = 0, cnt = 0; for(int i = -1; i < 2; ++i) { for(int j = -1; j < 2; ++j) { if(x + i < 0 || x + i >= board.size() || y+j < 0 || y+j >= board[0].size()) continue; m = x+i; n = y+j; if(board[m][n] == 'M') cnt++; } } if(cnt > 0) board[x][y] = '0' + cnt; else //cnt == 0 { board[x][y] = 'B'; for(int i = -1; i < 2; ++i) { for(int j = -1; j < 2; ++j) { if(x+i < 0 || x+i >= board.size() || y+j < 0 || y+j >= board[0].size()) continue; if(board[x+i][y+j] == 'E') { vector<int> c{x+i, y+j}; updateBoard(board, c); } } } } } return board; }};
阅读全文
0 0
- (M)DFS:529. Minesweeper
- 529. Minesweeper 扫雷游戏 DFS BFS
- LeetCode----Minesweeper (M)
- 529. Minesweeper
- 529. Minesweeper
- 529. Minesweeper
- 529. Minesweeper
- leetcode 529. Minesweeper 扫雷游戏 + 经典的DFS深度优先遍历
- Leetcode 529. Minesweeper
- LeetCode: 529. Minesweeper
- [LeetCode]529. Minesweeper
- [leetcode] 529. Minesweeper
- [leetcode] 529. Minesweeper
- 【Leetcode】529. Minesweeper
- LeetCode 529. Minesweeper
- 529. Minesweeper(Medium)
- 【LeetCode】529. Minesweeper
- 529. Minesweeper(第五周)
- 一键运行 ==》配置环境变量 [Java、Path]
- Matlab中使用Plot函数动态画图方法总结
- mappath使用介绍,Server.mappath和Request.mappath 有什么区别、及使用方法
- vue-cli 打包找不到 css 资源或者图片资源问题
- 一种动态阈值白平衡算法实现
- (M)DFS:529. Minesweeper
- 什么时候使用CountDownLatch
- 用scrapy和requests分别爬取内涵社区
- java学习原因Java高薪的原因都在这里
- Leetcode之partition-list
- python学习:元组和表达式,元组和列表区别的举例
- Idea--Tomcate配置中的On Upate Action 与 On Frame Deactivation
- matlab根据给定3点画圆弧
- Linux操作系统,物理内存管理