关闭

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

167人阅读 评论(0) 收藏 举报
分类:

题目:用一个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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:7097次
    • 积分:262
    • 等级:
    • 排名:千里之外
    • 原创:19篇
    • 转载:0篇
    • 译文:1篇
    • 评论:0条