橙旭园-高品质青少儿编程教育 | 扫雷游戏 (coding61.com)
十分简单的搜索,不过需要注意的是这里有八个方向需要搜索,而在边界搜索时可能会报错
解决办法:讲二维数组全部定义为0,然后cin时i和j从1开始
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>a[i][j];
}
}
判断则是判断该格是不是空格,如果是地雷格则跳过
完整代码:
#include<bits/stdc++.h>
using namespace std;
int n,m;
char a[10000][10000];
int w1={1,-1,0,0,1,-1,-1,1};
int w2={0,0,1,-1,1,1,-1,-1};
int t(int i,int j)
{
int ans=0;
for(int q=0;q<8;q++)
{
if(a[i+w1[q]][j+w2[q]]=='*')
{
ans++;
}
}
return ans;
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>a[i][j];
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(a[i][j]=='*')
{
cout<<'*';
continue;
}
cout<<t(i,j);
}
cout<<endl;
}
return 0;
}
求点赞_(≧∇≦」∠)_