#include <stdio.h>
char a[110][110];
int m, n;
int dir[4][2] = {{0, 1}, {0, -1}, {1, 0}, {-1, 0}};
void ss(int x, int y)
{
int i, j, xx, yy;
a[x][y] = '1';
for(i = 0; i < 4; i++)
{
xx = x + dir[i][0];
yy = y + dir[i][1];
if(xx < 0 || xx >=m || yy < 0 || yy >= n || a[xx][yy] != '#')
continue;
ss(xx, yy);
}
}
int main()
{
int i, j, sum;
int t;
scanf("%d", &t);
while(t--)
{
scanf("%d%d", &m, &n);
for(i = 0; i < m; i++)
scanf("%s", a+i);
for(i = sum = 0; i < m; i++)
for(j = 0; j < n; j++)
{
if(a[i][j] == '#')
{
sum++;
ss(i, j);
}
}
printf("%d\n", sum);
}
return 0;
}HDU 2952 与1241类似
最新推荐文章于 2019-11-08 22:29:33 发布
本文介绍了一种基于深度优先搜索的迷宫问题解决算法。通过递归方式遍历迷宫中所有可能路径,并使用字符数组表示迷宫状态,最终统计并输出连通区域的数量。适用于理解基本图遍历及搜索算法。

4万+

被折叠的 条评论
为什么被折叠?



