扫雷游戏 NOIP(入门)
2024-09-08 03:16:31
题目描述:
扫雷游戏是一款十分经典的单机小游戏。它的精髓在于,通过已翻开格子所提示的周围格地雷数,来判断未翻开格子里是否是地雷。
现在给出n行m列的雷区中的地雷分布,要求计算出每个非地雷格的周围格地雷数。
注:每个格子周围格有八个:上、下、左、右、左上、右上、左下、右下。
输入格式:
第一行包含两个整数n和m,分别表示雷区的行数和列数。1 <= n <= 100, 1 <= m <= 100。
接下来n行,每行m个字符,‘*’表示相应格子中是地雷,‘?’表示相应格子中无地雷。字符之间无任何分隔符。
输出格式:
n行,每行m个字符,描述整个雷区。若相应格中是地雷,则用‘*’表示,否则用相应的周围格地雷数表示。字符之间无任何分隔符。
样例输入:
3 3
*??
???
?*?
样例输出:
*10
221
1*1 思路:二维数组。注意八个增量。 上代码:
#include<bits/stdc++.h>
using namespace std;
char a[][];
int b[][];
int x[]={,-,-,,,,,,-};//增量,其实就是上下左右、左上、右上、左下、右下四个方向的坐标
int y[]={,,,,,,-,-,-};
int main(){
int n,m;
cin>>n>>m;
for (int i=;i<=n;i++)
for (int j=;j<=m;j++)
cin>>a[i][j];
for (int i=;i<=n;i++)
for (int j=;j<=m;j++)
if(a[i][j]=='*'){
for(int k=;k<=;k++){//八个方向扫一遍,不用增量也可以的
int x1=i+x[k], y1=j+y[k];
if (a[x1][y1]!='*') b[x1][y1]++;
}
}
for (int i=;i<=n;i++){
for (int j=;j<=m;j++){
if (a[i][j]=='*')cout<<"*";
else cout<<b[i][j];
}
cout<<endl;
}
return ;
}
最新文章
- 常用的sublime text插件(很爽哦)
- MySQL的安装与配置
- 【11-01】Sublime text 学习笔记
- 网页FLASH幻灯片播放带链接源代码 pixviewer.swf使用(转)
- [翻译][MVC 5 + EF 6] 3:排序、过滤、分页
- 观察者模式:猫叫鼠跑人醒(C#)
- Everything中文绿色版在Win7/8/10用不了问题的图文教程,只显示盘符
- JS 添加到事件的多个对象
- 映射请求到Servlet
- C#连接ACCESS的一个问题
- SIFT
- mktime性能问题调查
- DIV+CSS布局命名规范
- YII关联字段并带搜索排序功能
- java----回文序列判断java
- 【面试】Python面试题库
- 教你如何制作饼干icon教程
- iOS 怎样更新APP
- vs.net使用技巧
- springboot自定义配置文件
热门文章
- [转] 【iOS基础知识】之判断NSString是否为整数、浮点数
- 微信小程序-工具无法加载本地模拟开发服务的解决办法
- Ubuntu英文版中无法输入中文标点符号的问题
- v$sql、v$sqlarea、v$sqltext、v$sql_plan
- Centos 6.x 安装 Redis
- 《SQL 进阶教程》 case:练习题1-1-1 多列数据的最大值
- mysql issue:
- Datagridview强制结束编辑状态
- X Samara Regional Intercollegiate Programming Contest DIV2
- [干货分享]AXURE整套高保真UI框架和元件组(白色风格)