这道题讲的是扫雷游戏,相信很多狗友们也玩过,规则也很简单,点击空块,显示数字,排出附近的雷;如果你踩到雷了,那么,不好意思你死了
http://g.3699.co 简易版扫雷
言归正传。给出一个n行m列的雷区,"*"代表雷,"?"代表未知数字,让我们求出这些数字。一个格子的周围格子包括其上、下、左、右、左上、右上、左下、右下八个方向上与之直接相邻的格子。我们发现这道题可以用下标实现:
第一步:定义一个九宫格c[10][10]
(注:下标从1开始,故开到10,以防数组越界,RE!)!!!由于数据中出现的是"*","?"加粗文本等字符,故定义成"char"字符类型
以样例1为例:
九宫格如下:
* ? ? ? ? ? ? * ?
第二步:定义标记数组a[10][10]
在输入时,如果检测到雷,标记1;
标记数组:
1 0 0 0 0 0 0 1 0
第三步:遍历九宫格
先判断:当前格是否是雷格
是则直接输出雷符号:"*"
否则遍历九宫格下标
九宫格下标如下:
i-1,j-1 i-1,j i-1,j+1 i,j-1 i,j i+1,j i+1,j-1 i+1,j i+1,j+1
遍历标记数组,寻找标记为1的雷格,并将其值相加,最后输出i , j周围八个格子的雷的数量
这样,代码的主干就完成了✔
但是要注意!!!,题目所给出的提示是:
对于100%的数据,1≤n≤100, 1≤m≤1001≤n≤100,1≤m≤100
所以两个数组要变成
最后,再将所有代码块块拼接在一起:
首先,万能头+定义变量
接着,进行输入+打标记
最后,遍历+输出
完整代码如下:
(注:禁止抄袭!!!)
祝ACGO正在努力打代码的狗友们新年快乐!!!🎉🎉🎉