其實最後輸出的時候能夠用一句歸納爲一個三目表達式:cout<<(mm[i][j]<0?'*':m[i][j]),理解起來應該不困難string
最後,祝你們AV!!!AK!!!it
題面哦~~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