蓝桥杯—扫雷问题

你玩过扫雷游戏吗?这是一个可爱的小游戏,在一个特定的操作系统中,我们不能真正记住它的名字。嗯,游戏的目标是找出M×N场中所有的地雷在哪里。为了帮助你,游戏显示了一个正方形中的一个数字,它告诉你在那个方块附近有多少个地雷。例如,将以下4×4字段设为2枚地雷(以“*”字表示,“.”为安全区)

在这里插入图片描述

如果我们表示相同的字段,放置上面描述的提示号,那么我们将得到以下结果:

在这里插入图片描述

输入格式

输入将由任意数目的字段组成。每个字段的第一行包含两个整数n和m(0<n,m≤100),分别代表字段的行数和列数。下面的n行正好包含m个字符,并表示字段。每个安全广区都用“.”表示。字符(没有引号)和每个矿方格由一个‘*’字符表示(也没有引号)。第一个字段行,其中n=m=0表示输入的结尾,不应该进行处理。

输出格式

对于每个字段,必须单独在一行中打印以下消息:Field #x:其中x代表字段的数目(从1开始)。下一个n行应该包含“.”字段。将字符替换为与该方格相邻的地雷的数目。字段输出之间必须有空行。

输入样式

在这里插入图片描述
输出样式

在这里插入图片描述
扫雷的主要问题就是判断周围雷的个数
ch[i][j]表示雷区中的一个位置,那么就判断周围雷的个数
ch[i-1][j-1],ch[i-1][j],ch[i-1][j+1],ch[i][j-1],ch[i][j+1],ch[i+1][j-1],ch[i+1][j],ch[i+1][j+1];
即左上,上,右上,左,右,左下,右下。八个方位的位置。
接下来,判断该位置周围是否越界。
即:0<= i <n, 0<= j <m;

循环判断周围代码实现如下:

int count1 = 0;   // 统计该位置周围雷的个数
for(int k = i-1; k <= i+1; k++){
   
   for(
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值