当前位置:首页 > 复赛 > 正文内容

NOIP2015年普及组 T2 扫雷游戏

亿万年的星光4年前 (2021-01-28)复赛1664

【题目描述】

扫雷游戏是一款十分经典的单机小游戏。在n行m列的雷区中有一些格子含有地雷(称之为地雷格),其他格子不含地雷(称之为非地雷格)。玩家翻开一个非地雷格时,该格将会出现一个数字——提示周围格子中有多少个是地雷格。游戏的目标是在不翻出任何地雷格的条件下,找出所有的非地雷格。

现在给出n行m列的雷区中的地雷分布,要求计算出每个非地雷格周围的地雷格数。

注:一个格子的周围格子包括其上、下、左、右、左上、右上、左下、右下八个方向上与之直接相邻的格子。

【输入描述】

第一行是用一个空格隔开的两个整数n和m,分别表示雷区的行数和列数。

接下来n行,每行m个字符,描述了雷区中的地雷分布情况。字符’*’表示相应格子是地雷格,字符’?’表示相应格子是非地雷格。相邻字符之间无分隔符。

【输出描述】

包含n行,每行m个字符,描述整个雷区。用’*’表示地雷格,用周围的地雷个数表示非地雷格。相邻字符之间无分隔符。

【样例输入1】

3 3
*??
???
?*?

【样例输出1】

*10
221
1*1

【样例输入2】

2 3
?*?
*??

【样例输出2】

2*1
*21

【数据规模】

对于 100%的数据, 1≤n≤100,1≤m≤100

【分析】

1.题目数据范围不大,暴力搜索即可

2.数组不要越界

3. 一个思路是可以不用字符数组去判断,把题目中的字符数组转换成 0 和1

【思路1】

将输入的字符转换成数字,直接进行双重for循环遍历暴搜即可。

【参考代码1】

#include<bits/stdc++.h>
using namespace std;
bool a[105][105];//一张地图,有雷为一,无雷为零
int main()
{
   memset(a,0,sizeof(a));//地图最开始清空
   int n,m;
   char tmp;
   cin>>n>>m;
   for(int i=1;i<=n;i++)//读入地图
   {
       for(int j=1;j<=m;j++)
       {
           cin>>tmp;//读入每一个点
           if(tmp=='*') a[i][j]=1;//如果是地雷就将这个点设为一
       }
   }
   for(int i=1;i<=n;i++)
   {
       for(int j=1;j<=m;j++)
       {
           if(a[i][j]==1) printf("*"); //如果是地雷不用输出数字
           else
           {
               printf("%d",a[i+1][j+1]+a[i+1][j-1]+a[i+1][j]+a[i][j+1]+a[i][j-1]+a[i-1][j+1]+a[i-1][j]+a[i-1][j-1]);
              //将旁边的雷加起来输出
           }
       }
       printf("\n");
   }
   return 0;//愉快的结束了主程序
}


扫描二维码推送至手机访问。

版权声明:本文由青少年编程知识记录发布,如需转载请注明出处。

分享给朋友:

相关文章

NOIP/CSPJ 复赛中noilinux里的atbiter测评机的使用(附数据)

NOIP/CSPJ 复赛中noilinux里的atbiter测评机的使用(附数据)

0.前言最近这段时间在研究noilinux,NOI考试中的测评系统就在noilinux中,叫做atbiter。自己百度了一下,发现说的都比较官方,自己尝试了一遍,把过程和数据附上,以供参考。1.创建比...

NOIP2016年普及组 T2 回文日期

【题目描述】日常生活中,通过年、月、日这三个要素可以表示出一个唯一确定的日期。牛牛习惯用8位数字表示一个日期,其中,前4位代表年份,接下来2位代表月份,最后2位代表日期。显然:一个日期只有一种表示方法...

noiLinux中编程工具的使用

noiLinux中编程工具的使用

0.前言NOIP考试中,最终的程序要在noilinux中运行,以noilinux为准,但是有些省份做题基本就是DEVC++,有些细微的差别如果老师没讲过非常容易在考试中爆零。1.编程工具的选择关于no...

NOIP2009年普及组T1 多项式输出

NOIP2009年普及组T1 多项式输出

【题目描述】一元 n 次多项式可用如下的表达式表示:其中,aixiaixi 称为ii次项,aiai称为ii次项的系数。给出一个一元多项式各项的次数和系数,请按照如下规定的格式要求输...

CSPJ2019普及组T1 数字游戏

【题目描述】小 K 同学向小 P 同学发送了一个长度为 8 的 01 字符串来玩数字游戏,小 P 同学想要知道字符串中究竟有多少个 1。注意:01 字符串为每一个字符是 0 或者 1 的字符串,如“1...

NOIP2013年普及组T2 表达式求值

【题目描述】给定一个只包含加法和乘法的算术表达式,请你编程计算表达式的值。【输入描述】输入仅有一行,为需要你计算的表达式,表达式中只包含数字、加法运算符“+”和乘法运算符“∗”,且没有括号,所有参与运...