题目传送门:P2670 [NOIP2015 普及组] 扫雷游戏
枚举整个方阵,枚举到不是地雷时就枚举周围的种类。
一个建议:这道题不需要开二维char,只需要每次输入时把字符串存进char变量里,然后作int数组标记地雷为1,不是地雷为0。
代码:
#include <bits/stdc++.h>
using namespace std;
int n,m,cnt=0;
char a[105][105]={0};
int b[105][105]={0};
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>a[i][j];
if(a[i][j]=='*')b[i][j]=1;
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(a[i][j]=='?'){
cout<<b[i-1][j]+b[i+1][j]+b[i][j+1]+b[i][j-1]+b[i-1][j-1]+b[i-1][j+1]+b[i+1][j-1]+b[i+1][j+1];
}
else cout<<a[i][j];
}
cout<<endl;
}
return 0;
}