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

原创 2015年07月09日 11:43:07

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


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

★☆【启发式搜索】【图论】Remmarguts' Date

Description "Good man never makes girls wait or breaks an appointment!" said the mandarin duck fathe...

★☆【平衡二叉树】【倍增】会议中心

Siruseri政府建造了一座新的会议中心。许多公司对租借会议中心的会堂很感兴趣,他们希望能够在里面举行会议。 对于一个客户而言,仅当在开会时能够独自占用整个会堂,他才会租借会堂。会议中心的销售主管认...
  • Whjpji
  • Whjpji
  • 2012-03-30 11:35
  • 5309

Numpy练习100题--难度★☆☆

Numpy练习100题--难度★☆☆

★☆图片免费上传☆★

  • 2009-06-11 21:44
  • 278B
  • 下载

习题 12:因子分解★

  • 2013-03-10 11:55
  • 195KB
  • 下载

习题 47:因子分解阶乘版★

题目描述: 给你一个小于10000的非负整数n,然后对n!的结果进行因子分解 输入: 多组测试数据,每行就是数值n 输出: 输出分解结果,详见样例 样例输入: 1...

习题 12:因子分解★----程序运行在VC++6.0下

习题 12:因子分解★ 输入n(1 616 27 输出: 616 = 2^3 * 7 * 11 27 = 3^3 (注意输出空格,但行末不要有空格) 难度:f...

★★★★☆ Visual Studio 2008 每日小窍门 【持续发布ing~】 Tips:035

#035、 折叠和展开代码原文地址:http://blogs.msdn.com/saraford/archive/2007/09/12/did-you-know-how-to-collapse-and...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)