• 牛客网——扫雷



    活动地址:CSDN21天学习挑战赛

    学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您:
    想系统/深入学习某技术知识点…
    一个人摸索学习很难坚持,想组团高效学习…
    想写博客但无从下手,急需写作干货注入能量…
    热爱写作,愿意让自己成为更好的人…


    欢迎参与CSDN学习挑战赛,成为更好的自己,请参考活动中各位优质专栏博主的免费高质量专栏资源(这部分优质资源是活动限时免费开放喔~),按照自身的学习领域和学习进度学习并记录自己的学习过程。您可以从以下3个方面任选其一着手(不强制),或者按照自己的理解发布专栏学习作品,参考如下:

    **

    目录

    前言

    一、扫雷

    描述

    输入描述:

    输出描述:

    二、分析问题

    三、解决问题

    总结


    前言

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


    一、扫雷

    题目来源:

    扫雷_牛客题霸_牛客网

    描述

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

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

    比如初始的雷矩阵如下:

    ....

    ..**

    *.*.

    .*.*

    对应的数字矩阵为:

    0122

    13**

     *4*4

    2*3*

    输入描述:

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

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

    输出描述:

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


    二、分析问题

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

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

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

    三、解决问题

    代码如下:

    1. #include<stdio.h>
    2. int main() {
    3. int arr[1000][1000] = {0}, n, m;
    4. char input;
    5. scanf("%d %d", &n, &m);
    6. for (int i = 1; i <= n; i++) {
    7. getchar();
    8. for (int j = 1; j <= m; j++) {
    9. scanf("%c", &input);
    10. if (input == '*')
    11. arr[i][j] = 1; //*=1
    12. else
    13. arr[i][j] = 0;
    14. }
    15. }
    16. for (int i = 1; i <= n; i++) {
    17. for (int j = 1; j <= m; j++) {
    18. if (arr[i][j] == 1)
    19. printf("*"); //数组==1的时候可以知道那里是*
    20. else
    21. printf("%d", arr[i - 1][j - 1] + //如果那个点不是雷,把周边的数字都加起来,如果周围有雷点,+1了,没有雷本来也是0,没有影响
    22. arr[i - 1][j] +
    23. arr[i - 1][j + 1] +
    24. arr[i][j - 1] +
    25. arr[i][j + 1] +
    26. arr[i + 1][j - 1] +
    27. arr[i + 1][j] +
    28. arr[i + 1][j + 1]);
    29. }
    30. printf("\n");
    31. }
    32. return 0;
    33. }

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

    总结

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

  • 相关阅读:
    unity脚本_力 c#
    celery笔记三之task和task的调用
    ionic android app打包和发布
    【WebRTC】QoS 拥塞控制 GCC 理论 Sender Side BWE 或 REMB
    Kubernetes 使用 containerd 做为 CRI
    学习STM32第十九天
    Nginx完全指南 第二版 下载
    C# Task任务详解
    Solidity 小白教程:14. 抽象合约和接口
    微服务实战 07Spring Cloud Gateway 入门与实战
  • 原文地址:https://blog.csdn.net/m0_72503424/article/details/126374944