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

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


阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/mychaint/article/details/46814867
个人分类: 编程习题
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

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

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭