P2670 【扫雷游戏】

题面哦~~

lalala~~~

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

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

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

AC代码:

 1 #include<set>
 2 #include
 3 #include
 4 #include
 5 #include
 6 #include<string>
 7 #include
 8 #include
 9 #include
10 #include
11 #include
12 #include
13 #include
14 #include
15 #include
16 #include
17 #include
18 #include//忒多的头文件
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){
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){
45             if(mm[i][j]<0){//是地雷就输出*
46                 cout<<"*";
47             }
48             else{
49                 cout<//不是就输出周围个数
50             }
51         }
52         cout<<endl;
53     }
54     return 0;
55 }

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

最后,祝大家AV!!!AK!!!

 

转载于:https://www.cnblogs.com/hahaha2124652975/p/11123084.html

你可能感兴趣的:(P2670 【扫雷游戏】)