解题思路:本题是一道很经典的八联通的“水题”,可以用bfs或者dfs写,这里了贴一个dfs的代码
C++代码
#include <bits/stdc++.h>
using namespace std;
const int N = 210;
char g[N][N];
int n, m;
void dfs(int x, int y)
{
g[x][y] = '*';
for (int i = -1; i <= 1; i ++ )
{
for (int j = -1; j <= 1; j ++ )
{
if (i || j)
{
int a = x + i, b = y + j;
if (a >= 0 && a < n && b >= 0 && b < m && g[a][b] == '@')
{
dfs(a, b);
}
}
}
}
}
int main()
{
while (cin >> n >> m, n || m)
{
int res = 0;
for (int i = 0; i < n; i ++ )
{
for (int j = 0; j < m; j ++ )
{
cin >> g[i][j];
}
}
for (int i = 0; i < n; i ++ )
{
for (int j = 0; j < m; j ++ )
{
if (g[i][j] == '@')
{
dfs(i, j);
res ++ ;
}
}
}
cout << res << endl;
}
return 0;
}
创作不易,大家可以在AcWing注册账号,参与一下AC之星计划,我的邀请码是MYRGS。对题解有任何疑问可以在评论区下面评论