101. 孤岛的总面积
题目描述
给定一个由 1(陆地)和 0(水)组成的矩阵,岛屿指的是由水平或垂直方向上相邻的陆地单元格组成的区域,且完全被水域单元格包围。孤岛是那些位于矩阵内部、所有单元格都不接触边缘的岛屿。
现在你需要计算所有孤岛的总面积,岛屿面积的计算方式为组成岛屿的陆地的总数。
输入描述
第一行包含两个整数 N, M,表示矩阵的行数和列数。之后 N 行,每行包含 M 个数字,数字为 1 或者 0。
输出描述
输出一个整数,表示所有孤岛的总面积,如果不存在孤岛,则输出 0。
输入示例
4 5
1 1 0 0 0
1 1 0 0 0
0 0 1 0 0
0 0 0 1 1
输出示例
1
提示信息
在矩阵中心部分的岛屿,因为没有任何一个单元格接触到矩阵边缘,所以该岛屿属于孤岛,总面积为 1。
数据范围:
1 <= M, N <= 50。
其他用例
10 10
0 1 0 0 0 1 0 0 0 1
0 0 1 0 0 0 1 1 1 1
0 0 0 0 0 0 0 0 1 1
0 0 0 1 0 1 0 1 0 0
0 0 1 1 1 1 1 0 1 1
0 1 0 0 1 1 1 0 0 0
0 0 0 1 0 1 0 0 0 0
0 0 1 0 1 0 1 1 0 0
1 1 1 1 0 1 0 0 0 0
0 0 1 0 0 1 1 1 1 0答案:18
BFS实现
-
BFS 函数:
-
bfs(x, y, graph, visited)
:从坐标(x, y)
开始进行广度优先搜索。 -
首先将当前节点
(x, y)
标记为已访问(visited[x][y] = True
),并初始
-