用一个 M 行 N 列的矩形网格表示某群岛疆域的地形图,每个小格子里都有一个数字 1 或者 0,其中,0 表示海水(蓝色),1 表示陆地(绿色),并且矩形网格之外的部分都为海水。每个小格子面积为 1,已知每个岛屿都是由 1 个或多个竖直或水平相邻的陆地小格子组成(斜向不算相邻),且周围都是海水。那么请你计算图中面积最大的岛屿与面积最小的岛屿之间的面积差值。
例如:M=6,N=8 时,群岛疆域示意图如下:
其中,有 5 个岛屿,面积分别是 1,3,4,7,4,最大的岛屿面积是 7 ,最小的岛屿面积是 1 ,面积差是 7-1=6。
第一行输入两个正整数 M 和 N(3 \le M \le 1000,3 \le N \le 1000),表示网格行数与列数,两数之间用一个空格隔开。
接下来输入 M 行,每行 N 个整数,表示地形图(1 表示陆地,0 表示海水),两个整数之间用一个空格隔开。
输出一个整数,表示面积最大的岛屿与面积最小的岛屿之间的面积差。
6 8 0 0 0 0 1 0 1 1 1 1 1 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 1 1 1 0 1 1 0 0 0 1 1 0 1 0 0 0 0 1 0 0 1 0
6
蓝桥杯十五届STEMA考试 C++试卷(23年8月)