当前位置: 首页 > news >正文

蓝桥杯真题 - 扫雷 - 题解

题目链接:https://www.lanqiao.cn/problems/549/learning/

个人评价:难度 1 星(满星:5)
前置知识:无


整体思路

  • 按题意模拟;
  • 为了减少不必要的“数组越界”判断,让数组下标从 1 1 1 开始,这样即使判断第一行的上一行是否有雷,也不用加一个 if(i - 1 >= 0) 的判断了;
  • 使用一个数组记录 8 8 8 个方向,无需 8 8 8if 判断 8 8 8 个方向的雷,只需要一个 for 循环加 if 即可。

过题代码

#include <bits/stdc++.h>
using namespace std;typedef long long LL;
const int maxn = 100 + 100;
int n, m;
int ans[maxn][maxn];
// 方向数组
const int dir[8][2] = {{-1, -1}, {-1, 0}, {-1, 1},{0, -1}, {0, 1},{1, -1}, {1, 0}, {1, 1}
};int main() {
#ifdef ExRocfreopen("test.txt","r",stdin);
#endif // ExRoccin >> n >> m;for (int i = 1; i <= n; ++i) {for (int j = 1; j <= m; ++j) {cin >> ans[i][j];// 直接改为用 9 标记为雷,后面直接判断 9 的个数即可if (ans[i][j] == 1) {ans[i][j] = 9;}}}for (int i = 1; i <= n; ++i) {for (int j = 1; j <= m; ++j) {// 已经是雷,不用判断周围 8 个位置的雷数if (ans[i][j] == 9) {continue;}// 遍历方向数组,有雷就 + 1for (int k = 0; k < 8; ++k) {ans[i][j] += (ans[i + dir[k][0]][j + dir[k][1]] == 9);}}}// 输出答案for (int i = 1; i <= n; ++i) {for (int j = 1; j <= m; ++j) {cout << ans[i][j] << " ";}cout << endl;}return 0;
}
http://www.lryc.cn/news/507881.html

相关文章:

  • vue3项目结合Echarts实现甘特图(可拖拽、选中等操作)
  • Log4j2 插件的简单使用
  • Linux之RPM和YUM命令
  • 读取硬件板子上的数据
  • Cesium 实例化潜入潜出
  • java引入jedis并且关于开放redis端口问题
  • 【人工智能】用Python实现情感分析:从简单词典到深度学习方法的演进
  • 关系型数据库的完整性和一致性
  • 设计模式の命令访问者迭代器模式
  • 信息系统项目管理 -冲突管理
  • Gmsh有限元网格剖分(Python)---点、直线、平面的移动
  • 山景BP1048增加AT指令,实现单片机串口控制播放音乐(一)
  • SMMU软件指南SMMU编程之全局错误和最小配置
  • CPU条件下Pytorch、jupyter环境配置
  • 【自用】通信内网部署rzgxxt项目_01,后端pipeDemo部署(使用nssm.exe仿照nohup)
  • Ubuntu 安装实时内核指南
  • MySQL 主从复制与高可用
  • RCE总结
  • 基于UNITY3D的照片墙演示项目技术分享
  • 随手记:小程序兼容后台的wangEditor富文本配置链接
  • maven项目运行时NoSuchMethodError问题排查记录(依赖冲突解决)
  • ECharts关系图-关系图11,附视频讲解与代码下载
  • 【C语言】动态内存管理:详解malloc和free函数
  • EGO Swarm翻译
  • Linux根目录
  • SAP-SD-参照退货订单补货时带不出行项目
  • 12-C语言单向链表
  • 2024年11月 蓝桥杯青少组 STEMA考试 Scratch真题
  • FFmpeg 4.3 音视频-多路H265监控录放C++开发二十一.2,RTP协议-RTP协议概述,协议详情
  • Linux系统编程——系统内核中的信号