系列文章目录
第二题:扫雷游戏
视频讲解:http://【洛谷题单 - 算法 - 高精度】https://www.bilibili.com/video/BV1Ym4y1s7BD?vd_source=66a11ab493493f42b08b31246a932bbb
文章目录
目录
系列文章目录
文章目录
前言
一、题目分析以及思考
二、代码及题解
1.输入输出案例
2.代码
总结
前言
总所周知,扫雷游戏需要在众多方块中找到雷,那这里的“众多”则需要运用到高精度的知识,让我们一起来看看吧
提示:以下是本篇文章正文内容,下面案例可供参考
一、题目分析以及思考
题目分析:
这里唯一可能存在的误区是,周围表示全包围的四周,如,这里中间的?表示的周围是在红线圈起来的部分
思考
这里我们可以用到两个二维数组,一个字符串数组,一个是整数型数组,把整个雷表存在字符串数组中,把整数型数组中的所有值定为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};//初始化为0int 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;
}
总结
以上就是今天要讲的内容,本文介绍了洛谷中高精度算法的第二题,希望对您有所帮助~