news 2026/4/9 19:27:59

经典算法题型之扫雷游戏(二)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
经典算法题型之扫雷游戏(二)

解决方案

方法一:深度优先搜索 + 模拟

思路与算法

由于题目要求你根据规则来展示执行一次点击操作后游戏面板的变化,所以我们只要明确该扫雷游戏的规则,并用代码模拟出来即可。

那我们着眼于题目的规则,会发现总共分两种情况:

代码

C++ 实现

class Solution { public: int dir_x[8] = {0, 1, 0, -1, 1, 1, -1, -1}; int dir_y[8] = {1, 0, -1, 0, 1, -1, 1, -1}; void dfs(vector<vector<char>>& board, int x, int y) { int cnt = 0; for (int i = 0; i < 8; ++i) { int tx = x + dir_x[i]; int ty = y + dir_y[i]; if (tx < 0 || tx >= board.size() || ty < 0 || ty >= board[0].size()) { continue; } // 不用判断 M,因为如果有 M 的话游戏已经结束了 cnt += board[tx][ty] == 'M'; } if (cnt > 0) { // 规则 3 board[x][y] = cnt + '0'; } else { // 规则 2 board[x][y] = 'B'; for (int i = 0; i < 8; ++i) { int tx = x + dir_x[i]; int ty = y + dir_y[i]; // 这里不需要在存在 B 的时候继续扩展,因为 B 之前被点击的时候已经被扩展过了 if (tx < 0 || tx >= board.size() || ty < 0 || ty >= board[0].size() || board[tx][ty] != 'E') { continue; } dfs(board, tx, ty); } } } vector<vector<char>> updateBoard(vector<vector<char>>& board, vector<int>& click) { int x = click[0], y = click[1]; if (board[x][y] == 'M') { // 规则 1 board[x][y] = 'X'; } else { dfs(board, x, y); } return board; } };
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/26 18:04:31

Java毕设项目推荐-基于Java的网上宠物店管理系统宠物销售、服务预约、库存管理、客户互动【附源码+文档,调试定制服务】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/4/8 19:17:27

英伟达圣诞偷袭,200亿美元收购Groq

诸神缄默不语-个人技术博文与视频目录 看了substack的FOMO研究院圣诞特别篇介绍groq, LPU和英伟达实质性收购groq的文章。感觉写的非常好&#xff0c;及时分享。 &#xff08;因为限时48小时免费&#xff0c;趁还能看赶紧写&#xff09; Groq&#xff08;不是马斯克的grok&am…

作者头像 李华
网站建设 2026/3/26 17:52:27

transformer-explainer

https://poloclub.github.io/transformer-explainer/

作者头像 李华
网站建设 2026/4/8 12:52:18

真实污水处理项目中的S7-1200实战经验

西门子PLC1200真实项目案例程序十 KTp1200屏画面 十电路图 博途V16 V17版&#xff0c;模拟量输入输出处理&#xff0c;液位设置处理&#xff0c;流量处理&#xff0c;双设备轮换&#xff0c;modbus通讯控制变频器&#xff0c;事件记录&#xff0c;污水处理设备程序最近刚完成某…

作者头像 李华
网站建设 2026/3/26 14:23:19

JavaScript 常见算法复杂度总结(大O表示法)

大O表示法具体含义总结表时间复杂度详解大O表示名称含义示例增长曲线执行时间(n1000)假设O(1)常数时间执行时间不随输入规模变化数组索引访问、哈希表查找水平线1单位时间O(log n)对数时间执行时间随输入规模对数增长二分查找、平衡树操作缓慢上升曲线10单位时间O(√n)平方根时…

作者头像 李华