牛客网——扫雷

简介: 牛客网——扫雷

前言


今天咱们一起学习一下怎么扫雷。

一、扫雷


题目来源:

扫雷_牛客题霸_牛客网

描述


小sun上课的时候非常喜欢玩扫雷。他现小sun有一个初始的雷矩阵,他希望你帮他生成一个扫雷矩阵。

扫雷矩阵的每一行每一列都是一个数字,每个数字的含义是与当前位置相邻的8个方向中,有多少个雷(在下图中,雷用*表示);如果当前位置就是雷的话,仍输出一个*。

比如初始的雷矩阵如下:

....

..**

*.*.

.*.*

对应的数字矩阵为:

0122

13**

*4*4

2*3*

输入描述:


第一行两个整数n,m,代表矩阵有n行m列

接下来共n行,每行m个字符

输出描述:


输出共n行m列,为扫雷矩阵。

二、分析问题


规则:一定要明白扫雷的规则,就是一个数字表示它自身周围的八个格子有它数字相应数量的雷

那么我们要按题目完成任务就要使用防御编程,发现一个*(雷),整圈+1。

但是我们也要注意,因为*周边一圈里可能也有*,所以它是不能够加一的,要解决这个就要用到换元的思想了,把*=1。

三、解决问题


代码如下:

#include<stdio.h>
int main() {
    int arr[1000][1000] = {0}, n, m;
    char input;
    scanf("%d %d", &n, &m);
    for (int i = 1; i <= n; i++) {
        getchar();
        for (int j = 1; j <= m; j++) {
            scanf("%c", &input);        
            if (input == '*')            
                arr[i][j] = 1;                //把*=1
            else
                arr[i][j] = 0;
        }
    }
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= m; j++) {
            if (arr[i][j] == 1)
                printf("*");                               //数组==1的时候可以知道那里是*
            else
                printf("%d", arr[i - 1][j - 1] +   //如果那个点不是雷,把周边的数字都加起来,如果周围有雷点,+1了,没有雷本来也是0,没有影响    
                       arr[i - 1][j] +
                       arr[i - 1][j + 1] +
                       arr[i][j - 1] +
                       arr[i][j + 1] +
                       arr[i + 1][j - 1] +
                       arr[i + 1][j] +
                       arr[i + 1][j + 1]);
        }
        printf("\n");
    }
    return 0;
}

这道题最主要是了解,怎么判断周围是否加一。

总结


本篇内容只是和大家简单学习了一下怎么扫雷,希望对大家有帮助。

相关文章
|
存储 前端开发 Java
Element-UI中el-upload上传组件(demo详解)
案例详解Element-UI中el-upload上传组件,一起打卡学习吧!
2027 0
Element-UI中el-upload上传组件(demo详解)
|
easyexcel Java
EasyExcel模板填充
EasyExcel模板填充
633 1
|
数据可视化 前端开发 JavaScript
前端的可视化
前端的可视化
|
Java 数据库连接 数据库
|
Cloud Native Java 关系型数据库
【阿里云云原生专栏】构建云原生应用:基于Spring Boot与阿里云服务的全栈指南
【5月更文挑战第21天】构建云原生应用是企业数字化转型的关键,本文提供了一份基于Spring Boot和阿里云的全栈指南。涵盖从阿里云账号注册、ECS与Docker搭建,到Spring Boot项目创建、业务代码编写和部署。此外,还介绍了如何集成阿里云OSS存储、RDS数据库服务以及ACK容器服务,助力打造高效、可扩展和易管理的云原生应用。
1049 3
|
调度 UED 开发者
【鸿蒙软件开发】UIAbility组件概况、生命周期与启动模式
【鸿蒙软件开发】UIAbility组件概况、生命周期与启动模式
1445 0
【鸿蒙软件开发】UIAbility组件概况、生命周期与启动模式
|
JSON 安全 Java
2024年的选择:为什么Go可能是理想的后端语言
【4月更文挑战第27天】Go语言在2024年成为后端开发的热门选择,其简洁设计、内置并发原语和强大工具链备受青睐。文章探讨了Go的设计哲学,如静态类型、垃圾回收和CSP并发模型,并介绍了使用Gin和Echo框架构建Web服务。Go的并发通过goroutines和channels实现,静态类型确保代码稳定性和安全性,快速编译速度利于迭代。Go广泛应用在云计算、微服务等领域,拥有丰富的生态系统和活跃社区,适合作为应对未来技术趋势的语言。
2096 0
|
IDE Linux Go
Golang安装和配置指南:从零开始的高效开发之旅
Golang安装和配置指南:从零开始的高效开发之旅
|
NoSQL 安全 算法
Redis中SDS和C字符串的区别
Redis中SDS和C字符串的区别
125 0