扫雷(蓝桥杯)

文章目录

扫雷

题目描述

在一个 n 行 m列的方格图上有一些位置有地雷,另外一些位置为空。

请为每个空位置标一个整数,表示周围八个相邻的方格中有多少个地雷。

输入描述

输入的第一行包含两个整数 n, m。

第 2行到第 n+1 行每行包含 m个整数,相邻整数之间用一个空格分隔。如果对应的整数为 0,表示这一格没有地雷。如果对应的整数为 1,表示这一格有地雷。

其中,1≤n,m≤100 分钟后还是在当天。

输出描述

输出 n行,每行 m 个整数,相邻整数之间用空格分隔。

对于没有地雷的方格,输出这格周围的地雷数量。对于有地雷的方格,输出 9。

输入输出样例
示例 1

输入

3 4
0 1 0 0
1 0 1 0
0 0 1 0

输出

2 9 2 1
9 4 9 2
1 3 9 2

模拟

以下是对给定的扫雷程序代码及其执行流程的详细注释:

#include<bits/stdc++.h> // 包括了几乎所有的标准库
using namespace std;

int n,m; // n 表示行数,m 表示列数
int a[110][110],b[110][110]; // a 存储原始地图信息,b 存储输出地图信息

// get 函数计算给定坐标 (x, y) 周围八个方格中地雷的数量
int get(int x,int y)
{
    int sum=0; // 用于累加周围地雷的数量
    for(int i=x-1;i<=x+1;i++) // 遍历给定方格周围的行
        for(int j=y-1;j<=y+1;j++) // 遍历给定方格周围的列
            sum+=a[i][j]; // 将周围方格的地雷(如果有)加到 sum 上
    return sum; // 返回计算出的地雷数量
}

int main()
{
    cin>>n>>m; // 读入行数和列数
    // 读入原始地图信息,地雷用 1 表示,无地雷用 0 表示
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            cin>>a[i][j]; // 将地图信息存入数组 a

    // 计算每一个方格周围的地雷数量,或者标记方格为有地雷
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            if(a[i][j]==1) b[i][j]=9; // 如果当前方格有地雷,标记为 9
            else b[i][j]=get(i,j); // 否则,计算并存储周围地雷的数量

    // 输出结果
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
            cout<<b[i][j]<<" "; // 输出每个方格的结果,地雷或周围地雷数
        cout<<endl; // 每行输出后换行
    }
    return 0; // 程序结束
}

程序执行流程:

  1. 程序开始后,首先读入行数和列数 nm
  2. 然后,读入地图信息,其中 1 表示该方格有地雷,0 表示该方格没有地雷。这些信息被存入数组 a 中。
  3. 接着,程序对于地图上的每一个方格,通过 if 判断这个方格是否有地雷:
    • 如果有地雷(a[i][j] == 1),则在输出数组 b 的对应位置存储 9
    • 如果没有地雷,则调用 get 函数计算这个方格周围八个方格中的地雷总数,并将这个数值存入数组 b 的对应位置。
  4. 最后,遍历数组 b,输出每个方格的值,即每个方格周围的地雷数量或者标记为有地雷(9),每输出一行后换行。
  5. 当所有行都输出完毕,程序结束。

这个程序基于暴力枚举的方式来计算每个空方格周围的地雷数,对于有地雷的方格直接输出 9。这种方法直观且易于实现,但在地图较大时可能会有性能瓶颈。

相关推荐

  1. 扫雷

    2024-03-31 01:36:02       42 阅读
  2. 每日一题:扫雷

    2024-03-31 01:36:02       41 阅读
  3. 每日一题】4.4 扫雷

    2024-03-31 01:36:02       45 阅读
  4. 2021】扫雷

    2024-03-31 01:36:02       48 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-31 01:36:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-31 01:36:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-31 01:36:02       82 阅读
  4. Python语言-面向对象

    2024-03-31 01:36:02       91 阅读

热门阅读

  1. C++:右值引用 && 和移动赋值std::move分析

    2024-03-31 01:36:02       40 阅读
  2. ResutBuilder 学习笔记二:增加新的输入数据类型

    2024-03-31 01:36:02       45 阅读
  3. 每日一题 --- 四数相加 II[力扣][Go]

    2024-03-31 01:36:02       44 阅读
  4. 什么是ac

    2024-03-31 01:36:02       37 阅读
  5. kubernetes(K8S)学习(八):K8S之常见部署方案

    2024-03-31 01:36:02       45 阅读
  6. PreparedStatement对象

    2024-03-31 01:36:02       32 阅读
  7. Acwing 1238.日志统计 双指针

    2024-03-31 01:36:02       38 阅读