《广度优先搜索》
2024-05-26 20:01:30
发布于:上海
39阅读
0回复
0点赞
#include <iostream>
using namespace std;
char map[111][111];
int n , m;
int sum = 0;
bool vis[111][111];
int nx[8] = {-1, 1, 0, 0, -1, -1, 1, 1};
int ny[8] = {0, 0, -1, 1, -1, 1, -1, 1};
void dfs(int xx , int yy)
{
for (int i = 0 , x , y ; i < 8 ; i++) {
x = xx + nx[i];
y = yy + ny[i];
if (x >= 0 && x < n && y >= 0 && y < m && map[x][y] == 'W' && vis[x][y] == 0)
{
vis[x][y] = 1;
dfs(x, y);
}
}
}
int main()
{
cin >> n >> m;
for (int i = 0 ; i < n ; i ++)
{
for (int j = 0 ; j < m ; j ++)
{
cin >> map[i][j];
}
}
for (int i = 0 ; i < n ; i ++)
{
for (int j = 0 ; j < m ; j ++)
{
if (map[i][j] == 'W' && vis[i][j] == 0)
{
vis[i][j] = 1;
dfs(i , j);
sum ++;
}
}
}
cout << sum << endl;
return 0;
}
除了数据范围 其实和数水坑是一道题
这里空空如也
有帮助,赞一个