洛谷P2670-扫雷游戏
原题链接
题面简述
在n行m列的雷区中有一些格子含有地雷(称之为地雷格),其他格子不含地雷(称之为非地雷格)。玩家翻开一个非地雷格时,该格将会出现一个数字——提示周围格子中有多少个是地雷格。游戏的目标是在不翻出任何地雷格的条件下,找出所有的非地雷格。
现在给出nnn行mmm列的雷区中的地雷分布,要求计算出每个非地雷格周围的地雷格数。
注:一个格子的周围格子包括其上、下、左、右、左上、右上、左下、右下八个方向上与之直接相邻的格子。
输入格式
第一行是用一个空格隔开的两个整数nnn和mmm,分别表示雷区的行数和列数。
接下来nnn行,每行mmm个字符,描述了雷区中的地雷分布情况。字符*表示相应格子是地雷格,字符’?’表示相应格子是非地雷格。相邻字符之间无分隔符。
输出格式
输出文件包含nnn行,每行mmm个字符,描述整个雷区。用*表示地雷格,用周围的地雷个数表示非地雷格。相邻字符之间无分隔符。
思路
string输入,之后模拟。
用string数组,一行一行处理。
代码
#include <bits/stdc++.h>
using namespace std;
int main() {
int n,m;
string a[1001];
cin>>n>>m;
for(int i = 0;i<n;++i) {
cin>>a[i];
}
for(int i = 0;i<n;++i) {
for(int j = 0;j<m;++j) {
if(a[i][j]=='*') {
cout<<'*';
} else {
int ans = 0;
if(i==0&&j==0) {
a[i][j]=='x';
if(a[i][j+1]=='*') {
ans++;
}
if(a[i+1][j]=='*') {
ans++;
}
if(a[i+1][j+1]=='*') {
ans++;
}
}
if(i!=0&&j==0) {
if(a[i][j+1]=='*') {
ans++;
}
if(a[i+1][j]=='*') {
ans++;
}
if(a[i+1][j+1]=='*') {
ans++;
}
if(a[i-1][j]=='*') {
ans++;
}
if(a[i-1][j+1]=='*') {
ans++;
}
}
if(i==0&&j!=0) {
if(a[i][j-1]=='*') {
ans++;
}
if(a[i][j+1]=='*') {
ans++;
}
if(a[i+1][j]=='*') {
ans++;
}
if(a[i+1][j+1]=='*') {
ans++;
}
if(a[i+1][j-1]=='*') {
ans++;
}
}
if(i!=0&&j!=0) {
if(a[i][j-1]=='*') {
ans++;
}
if(a[i][j+1]=='*') {
ans++;
}
if(a[i+1][j]=='*') {
ans++;
}
if(a[i+1][j+1]=='*') {
ans++;
}
if(a[i+1][j-1]=='*') {
ans++;
}
if(a[i-1][j]=='*') {
ans++;
}
if(a[i-1][j+1]=='*') {
ans++;
}
if(a[i-1][j-1]=='*') {
ans++;
}
}
cout<<ans;
}
}
cout<<endl;
}
}
洛谷P2670-扫雷游戏的更多相关文章
- 洛谷 P2670 扫雷游戏==Codevs 5129 扫雷游戏
题目描述 扫雷游戏是一款十分经典的单机小游戏.在n行m列的雷区中有一些格子含有地雷(称之为地雷格),其他格子不含地雷(称之为非地雷格).玩家翻开一个非地雷格时,该格将会出现一个数字——提示周围格子中有 ...
- 洛谷P2670扫雷游戏题解
题目 这道题是一个简单的模拟搜索题,可以把每个雷的位置都记作1. 这样就可记录出数字啦 #include<iostream> #include<cstring> using n ...
- 洛谷 P2197 nim游戏
洛谷 P2197 nim游戏 题目描述 甲,乙两个人玩Nim取石子游戏. nim游戏的规则是这样的:地上有n堆石子(每堆石子数量小于10000),每人每次可从任意一堆石子里取出任意多枚石子扔掉,可以取 ...
- 洛谷 P1965 转圈游戏
洛谷 P1965 转圈游戏 传送门 思路 每一轮第 0 号位置上的小伙伴顺时针走到第 m 号位置,第 1 号位置小伙伴走到第 m+1 号位置,--,依此类推,第n − m号位置上的小伙伴走到第 0 号 ...
- 洛谷 P1000 超级玛丽游戏
P1000 超级玛丽游戏 题目背景 本题是洛谷的试机题目,可以帮助了解洛谷的使用. 建议完成本题目后继续尝试P1001.P1008. 题目描述 超级玛丽是一个非常经典的游戏.请你用字符画的形式输出超级 ...
- 【流水调度问题】【邻项交换对比】【Johnson法则】洛谷P1080国王游戏/P1248加工生产调度/P2123皇后游戏/P1541爬山
前提说明,因为我比较菜,关于理论性的证明大部分是搬来其他大佬的,相应地方有注明. 我自己写的部分换颜色来便于区分. 邻项交换对比是求一定条件下的最优排序的思想(个人理解).这部分最近做了一些题,就一起 ...
- $loj10156/$洛谷$2016$ 战略游戏 树形$DP$
洛谷loj Desription Bob 喜欢玩电脑游戏,特别是战略游戏.但是他经常无法找到快速玩过游戏的方法.现在他有个问题. 现在他有座古城堡,古城堡的路形成一棵树.他要在这棵树的节点上放置最少数 ...
- 洛谷P1000 超级玛丽游戏(洛谷新手村1-1-1)
题目背景 本题是洛谷的试机题目,可以帮助了解洛谷的使用. 建议完成本题目后继续尝试P1001.P1008. 题目描述 超级玛丽是一个非常经典的游戏.请你用字符画的形式输出超级玛丽中的一个场景. *** ...
- 洛谷P1080 国王游戏 python解法 - 高精 贪心 排序
洛谷的题目实在是裹脚布 还编的像童话 这题要 "使得获得奖赏最多的大臣,所获奖赏尽可能的少." 看了半天都觉得不像人话 总算理解后 简单说题目的意思就是 根据既定的运算规则 如何排 ...
- 洛谷1640 bzoj1854游戏 匈牙利就是又短又快
bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类 ...
随机推荐
- js数组及动态插入节点数据
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Java设计模式_七大原则
简介 单一职责原则.对类来说,即一个类应该只负责一项职责. 开闭原则.对扩展开放,对修改关闭.在程序需要进行扩展的时候,不能去修改原有代码,使用接口和抽象类实现一个热插拔的效果. 里氏替换原则.任何基 ...
- UNIX环境高级编程 使用方法
1.解压文件到apue.2e目录2.修改相应平台的文件,我使用的是linux,所以修改Make.defines.linux你修改的只需要这一行WKDIR=/home/your_dir/apue2e_s ...
- Android Studio Module 引入aar
1.把aar文件放到module的libs目录下 2.作为lib的module的gradle文件: repositories { flatDir { dirs 'libs' } } dependenc ...
- [考试反思]1023csp-s模拟测试83:等候
分数倒是依旧那么烂,但是这个时间比较诡异. 6分49秒弄出T1,15分钟送上T2的50分暴力,不到一小时半的时候T3的30分暴力也完成了... 在85分钟之后一次提交也没有 前15分钟平均每分钟得10 ...
- [考试反思]0902NOIP模拟测试35:摆动
skyh/Mr.zkt214 cbx204 6个200 4个180 172 162 我:rank16,160 呃,可以看到这个分差.... 对了教练说了两句话需要记录一下: 1.不要因为一时情绪而作出 ...
- HashMap 中的容量与扩容实现,细致入微,值的一品!
前言 开心一刻 巴闭,你的脚怎么会有味道,我要闻闻看是不是好吃的,嗯~~爸比你的脚臭死啦!! …… 高手过招,招招致命 JDK1.8 中 HashMap 的底层实现,我相信大家都能说上来个 一二,底层 ...
- Topshelf+Quatz.Net的简单使用
Topshelf+Quatz.Net的简单使用 一 Topshelf概述 Topshelf是创建Windows服务的另一种方法,老外的一篇文章Create a .NET Windows Servic ...
- Java描述设计模式(17):调停者模式
本文源码:GitHub·点这里 || GitEE·点这里 一.生活场景 1.场景描述 在公司的日常安排中,通常划分多个部门,每个部门又会分为不同的小组,部门经理的一项核心工作就是协调部门小组之间的工作 ...
- php PDO getlastsql写法
php PDO getlastsql写法有些时候 运行失败需要查看 sql语句 原型有没有语法错误 这个时候就用 下面的函数就是把问号替换成 值 就可以看到原型了<pre>function ...