水题
2025-09-06 19:30:55
发布于:云南
0阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
const int N = 1005;
int vis[N][N] = {0}, n, m;
char a[N][N];
int dx[8] = {-1, -1, -1, 0, 0, 1, 1, 1};
int dy[8] = {-1, 0, 1, -1, 1, -1, 0, 1};
void dfs(int x, int y) {
if (x > n || y > m || x < 1 || y < 1 || a[x][y] == '.')
return;
if (!vis[x][y]) {
vis[x][y] = 1;
for (int i = 0; i < 8; i++) {
dfs(x + dx[i], y + dy[i]);
}
}
}
int main() {
int tot = 0;
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] == 'W' && !vis[i][j]) {
dfs(i, j);
tot++;
}
}
}
cout << tot << endl;
return 0;
}
这里空空如也
有帮助,赞一个