#include <bits/stdc++.h>
const int maxn = 105;
char maps[maxn][maxn];
int dx[4] = {-1,1,0,0};
int dy[4] = {0,0,-1,1};
int w, h;
int cnt;
bool in(int x, int y) {
return x >= 0 && x < h && y >= 0 && y < w;
}
void dfs(int x, int y) {
if(!in(x, y))
return;
if(maps[x][y] != '#') //不能扩展
return;
maps[x][y] = '.';//floodfill
for(int i = 0; i < 4; i++) {
int xx = x + dx[i];
int yy = y + dy[i];
if(in(xx, yy) && maps[xx][yy] == '#') {
dfs(xx, yy);
}
}
}
int main() {
//freopen("data.in", "r", stdin);
int No;
scanf("%d", &No);
while(No--) {
while(scanf("%d %d", &h, &w) == 2 && h && w) {
for(int i = 0; i < h; ++i) {
scanf("%s", maps[i]);
}
cnt = 0;
for(int i = 0; i < h; ++i) {
for(int j = 0; j < w; j++) {
if(maps[i][j] == '#') {
dfs(i, j);
cnt++;
}
}
}
printf("%d\n", cnt);
}
}
return 0;
}
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交