洛谷 P9243 蓝桥杯 2023 省B 岛屿个数
本题要求求一个地图中的岛屿数量,但是不包括子岛屿(在其它岛屿围成的环之间)。 对于求岛屿,可以使用搜索中的 Flood Fill 算法来实现,对每个为 111 的陆地进行 BFS,标记与它相邻的所有陆地。为了实现环内部的岛屿不被统计,我们可以先 BFS 海域,在 BFS 海域的过程中如果遍历到为 111 的陆地,就来一遍 Flood Fill 将其相邻的陆地全部打上标记,如果遍历到为 000 的海水就不入队(只有 000 会入队)。 需要注意的是,遍历海域是八个方向拓展的,而遍历陆地是四个方向扩展的。同时我们能保证海水拓展八个方向得到的岛屿都不在环内,这是因为陆地不入队,岛屿在环内的话是进不去的。可以借助下面样例来理解: 123450111111001101011000111111 我们不可能遍历到 (3,2)(3,2)(3,2) 位置的 000 的,因为 000 不入队,遍历海域是进不到环内的,自然就遍历不到环内的 111 了。所以我们对于每次 Flood Fill,直接将答案加 111...