系列文章目录
第二题:扫雷游戏
文章目录
目录
前言
总所周知,扫雷游戏需要在众多方块中找到雷,那这里的“众多”则需要运用到高精度的知识,让我们一起来看看吧
提示:以下是本篇文章正文内容,下面案例可供参考
一、题目分析以及思考
题目分析:
这里唯一可能存在的误区是,周围表示全包围的四周,如,这里中间的?表示的周围是在红线圈起来的部分
思考
这里我们可以用到两个二维数组,一个字符串数组,一个是整数型数组,把整个雷表存在字符串数组中,把整数型数组中的所有值定为0,一旦检测到 ' * ' 就让它周围的所有整数型都+1
输出:if判断即可,如果检测到 ' * ' ,直接输出,
二、代码及题解
1.输入输出案例
输入:
3 3
*??
???
?*?
输出:
*10
221
1*1
2.代码
代码如下(示例):
#include <bits/stdc++.h>
using namespace std;
int main()
{
char a[200][200];//把雷盘存在a中
int b[200][200]={0};//初始化为0
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>a[i][j];
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
{
if(a[i][j]=='*')//存在‘*’时,四周都++
{
b[i-1][j-1]++;
b[i-1][j]++;
b[i-1][j+1]++;
b[i][j-1]++;
b[i][j+1]++;
b[i+1][j-1]++;
b[i+1][j]++;
b[i+1][j+1]++;
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++)
{
if(a[i][j]=='*')//如果存在‘*’,直接输出即可
cout<<"*";
else{
cout<<b[i][j];
}
}
cout<<endl;
}
return 0;
}
总结
以上就是今天要讲的内容,本文介绍了洛谷中高精度算法的第二题,希望对您有所帮助~