题解 | 扫雷
扫雷
https://www.nowcoder.com/practice/d5f277427d9a4cd3ae60ea6c276dddfd
题干解读;输入一个字符矩阵a[n][m],根据这个字符矩阵的内容输出地雷矩阵.如果矩阵a中的元素为*则b中符号也为*,如果不为*,b中符号是a中对于元素周围8个方向上相邻的*的个数
解题思路:对于输入的矩阵a遍历,找到每一个非*元素相邻的*的个数,然后输出存放到数组b的相应位置,最后输出即可.
#include <iostream>
using namespace std;
int main() {
int n,m;
cin>>n>>m;
char a[n][m];
char b[n][m];
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
cin>>a[i][j];
}
}
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(a[i][j]=='*'){
b[i][j] = '*';
}else{
int num=0;
if((i>0 && j>0) && a[i-1][j-1] == '*'){
num++;
}
if(i>0 &&a[i-1][j] == '*'){
num++;
}
if((i>0 && j<m-1) &&a[i-1][j+1] == '*'){
num++;
}
if(j>0 &&a[i][j-1] == '*'){
num++;
}
if(j<m-1 && a[i][j+1] == '*'){
num++;
}
if(i<n-1 && j>0 &&a[i+1][j-1] == '*'){
num++;
}
if(i<n-1 && a[i+1][j] == '*'){
num++;
}
if(i<n-1 && j<m-1 && a[i+1][j+1] == '*'){
num++;
}
b[i][j] = '0'+num;
}
cout<<b[i][j];
}
cout<<endl;
}
}
