【编程习题★★★☆☆】计算岛屿的数量

来源:互联网 发布:sql修改约束条件 编辑:程序博客网 时间:2024/06/16 03:04

题目:用一个N*N的矩阵来表示一张地图,其中0位海洋,1位陆地。被0保围起来的所有1组成岛屿。试计算矩阵中岛屿的数量。

示例:

1 0 0 0 1 1 0 0

1 1 0 1 0 0 1 0

1 1 1 1 0 0 1 1

0 0 0 1 0 0 1 0

输出:3

分析:以每一元素作为起点进行一次深度优先遍历,将所遇到的1全部标记为0,无法进行下去时,计数器加一,代表搜索完一座岛屿,依次类推。

JAVA:

public int numIslands(char[][] grid) {if (grid != null) {int count = 0;for (int i = 0; i < grid.length; i++) {for (int j = 0; j < grid[0].length; j++) {if (grid[i][j] == '1') {measureIsland(grid, i, j);count++;}}}return count;}return 0;}private void measureIsland(char[][] grid, int i, int j) {if (grid[i][j] != '0') {grid[i][j] = '0';if (i != 0)measureIsland(grid, i - 1, j);if (j != 0)measureIsland(grid, i, j - 1);if (i != grid.length - 1)measureIsland(grid, i + 1, j);if (j != grid[0].length - 1)measureIsland(grid, i, j + 1);}}


0 0
原创粉丝点击