P2670 【掃雷遊戲】

題面哦~~ios

lalala~~~spa

這題數據並不大,最大不過100*100,因此果斷窮舉code

其實原本我是想邊讀邊作的,但讀入是個問題。blog

主要思路呢,就是讀完以後窮舉一邊,只要是炸彈,就把周圍一圈8個加一遍ci

AC代碼:get

 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]),理解起來應該不困難string

最後,祝你們AV!!!AK!!!it

相關文章
相關標籤/搜索