c/c++语言开发共享P2670 【扫雷游戏】

题面哦~~ lalala~~~ 这题数据并不大,最大不过100*100,所以果断穷举 其实本来我是想边读边做的,但读入是个问题。 主要思路呢,就是读完之后穷举一边,只要是炸弹,就把周围一圈8个加一遍 AC代码: 其实最后输出的时候可以用一句概括为一个三目表达式:cout<<(mm[i][j]<0?' …

题面哦~~

lalala~~~

这题数据并不大,最大不过100*100,所以果断穷举

其实本来我是想边读边做的,但读入是个问题。

主要思路呢,就是读完之后穷举一边,只要是炸弹,就把周围一圈8个加一遍

ac代码:

 1 #include<set>   2 #include<map>   3 #include<list>   4 #include<queue>   5 #include<stack>   6 #include<string>   7 #include<cmath>   8 #include<ctime>   9 #include<vector>  10 #include<bitset>  11 #include<memory>  12 #include<utility>  13 #include<cstdio>  14 #include<sstream>  15 #include<iostream>  16 #include<cstdlib>  17 #include<cstring>  18 #include<algorithm>//忒多的头文件  19 using namespace std;  20 int n,m;  21 int mm[105][105];  22 char a[105][105];  23 int main(){  24     cin>>n>>m;  25     for(int i=1;i<=n;i++){  26         scanf("%s",&a[i]);//我之前想的读入好复杂,,结果。。。  27     }  28     for(int i=1;i<=n;i++){//穷举  29         for(int j=0;j<m;j++){  30             if(a[i][j]=='*'){//是炸弹的情况  31                 mm[i][j]=-100000000;//其实一个点最多就加8下  32                 mm[i-1][j-1]++;//不停加,8个  33                 mm[i-1][j]++;  34                 mm[i-1][j+1]++;  35                 mm[i][j-1]++;  36                 mm[i][j+1]++;  37                 mm[i+1][j-1]++;  38                 mm[i+1][j]++;  39                 mm[i+1][j+1]++;  40             }  41         }  42     }  43     for(int i=1;i<=n;i++){  44         for(int j=0;j<m;j++){  45             if(mm[i][j]<0){//是地雷就输出*  46                 cout<<"*";  47             }  48             else{  49                 cout<<mm[i][j];//不是就输出周围个数  50             }  51         }  52         cout<<endl;  53     }  54     return 0;  55 }

其实最后输出的时候可以用一句概括为一个三目表达式:cout<<(mm[i][j]<0?’*’:m[i][j]),理解起来应该不困难

最后,祝大家av!!!ak!!!

 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/602836.html

(0)
上一篇 2021年5月11日
下一篇 2021年5月11日

精彩推荐