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

时间:2025-03-14 08:50:47

题目:用一个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 < ; 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 !=  - 1)
				measureIsland(grid, i + 1, j);
			if (j != grid[0].length - 1)
				measureIsland(grid, i, j + 1);
		}
	}