最简单的题解
2024-05-05 14:32:37
发布于:广东
15阅读
0回复
0点赞
#include <iostream>
using namespace std;
//左上、正上、右上、正左、正右、左下、正下、右下
int x[10] = { -1 , -1 , -1 , 0 , 0 , 1 , 1 , 1};
int y[10] = { -1 , 0 , 1 , -1 , 1 ,-1 , 0 , 1};
char c[110][110]; //地图
int a[110][110]; //相邻格子雷的数目
int main(){
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>c[i][j];
}
}
//遍历地图
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(c[i][j]'*'){ //地雷把周围的格子加1
for(int k=0;k<=7;k++){
//获得下一个移动的坐标
int x1 = i + x[k];
int y1 = j + y[k];
if(x1>=1&&x1<=n&&y1>=1&&y1<=m){//判断是否在矩阵内部
a[x1][y1]; //地雷相邻格子加1
}
}
}
}
}
//输出
for(int i=1;i<=n;i){
for(int j=1;j<=m;j++){
if(c[i][j]''){
cout<<'';
}
else{
cout<<a[i][j];
}
}
cout<<endl;
}
return 0;
}
这里空空如也
有帮助,赞一个