你好
2024-08-20 16:11:04
发布于:浙江
1阅读
0回复
0点赞
using namespace std;
int n, m;
char a[105][105];
int dx[8]= {-1, 1, 0, 0, -1, -1, 1, 1};//依次对应上、下、左、右、左上、右上、左下、右下八个方向 的x坐标变化差值
int dy[8]= { 0, 0, -1, 1, -1, 1, -1, 1};//依次对应上、下、左、右、左上、右上、左下、右下八个方向 的y坐标变化差值
int main() {
cin>>n>>m;
getchar();//过滤掉输入m后的换行字符
for(int i=0; i<n; i++) {
for(int j=0; j<m; j++)
a[i][j]=getchar();
getchar();//过滤每行的换行字符
}
for(int i=0; i<n; i++) {
for(int j=0; j<m; j++) {
int cnt=0;//统计每个坐标点周边*的数量 ,初始化为0
for(int k=0; k<8; k++) {//循环遍历坐标点8个方向
int nx=i+dx[k];
int ny=j+dy[k];
if(nx < 0 || nx > n-1 && ny < 0 && ny > m-1)continue;//如果越界,则判断下一个方向
if(a[nx][ny]=='*')cnt++;//如果周边有*则把cnt累加1
}
if(a[i][j]=='*')//如果该点为*则输出*
cout<<'*';
else//否则输出周边*数
cout<<cnt;
}
cout<<endl;
}
return 0;
}
这里空空如也
有帮助,赞一个