链接:https://ac.nowcoder.com/acm/problem/14408
来源:牛客网
璐神现在有张n*m大小的地图,地图上标明了陆地(用"#"表示)和海洋(用"."表示),现在璐神要计算这张地图上岛屿的数量。
已知岛屿是由陆地的连通块组成,即一块陆地的上、下、左、右,左上,右上,左下,右下有其他陆地,则构成连通块,以此类推。
此外,岛屿的详细定义如下:
1、岛屿的周围必须全是海洋。
2、如果连通块有任意区域在地图边界,则该连通块不是岛屿。
第1行输入两个整数n,m,代表地图的长和宽。
第2-n+1行,每行输入m个字符,字符为"#"表示陆地,为"."表示海洋。
数据保证:0<n,m≤200
输出一行整数,代表岛屿的数量。
示例1
3 3
...
.#.
...
1
只有中间的1块陆地是岛屿,所以岛屿数=1
示例2
3 3
#..
.#.
...
0
中间的连通块有区域在边界,所以不是岛屿,岛屿数=0。
-------
考虑边界,需要先将边界的陆地不是岛屿的进行更新了,然后再遍历是岛屿的部分,2个步骤都可以用dfs来做。至少现在稍微会点dfs了。