题面哦~~
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