刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

2.寻宝图
给定一幅地图,其中有水域,有陆地。被水域完全环绕的陆地是岛屿。有些岛屿上埋藏有宝藏,这些有宝藏的点也被标记出来了。本题就请你统计一下,给定的地图上一共有多少岛屿,其中有多少是有宝藏的岛屿。
时间限制:1000
内存限制:262144
输入
输入第一行给出 2 个正整数 N 和 M(1 < N × M ≤ 105),是地图的尺寸,表示地图由 N 行 M 列格子构成。随后 N 行,每行给出 M 位个位数,其中 `0` 表示水域,`1` 表示陆地,`2`-`9` 表示宝藏。 注意:两个格子共享一条边时,才是“相邻”的。默认地图外围全是水域。
输出
在一行中输出 2 个整数,分别是岛屿的总数量和有宝藏的岛屿的数量。
样例输入
10 11
01000000151
11000000111
00110000811
00110100010
00000000000
00000111000
00114111000
00110010000
00019000010
00120000001
样例输出
7 2

使用微信搜索喵呜刷题,轻松应对考试!

答案:

解析:

{针对这个问题,我们可以使用深度优先搜索(DFS)算法来解决。首先,我们需要读取地图的尺寸和具体的格子数据。然后,我们可以初始化两个计数器,一个用于统计岛屿的总数量,另一个用于统计有宝藏的岛屿的数量。

接下来,我们遍历整个地图。对于每一个陆地格子,我们进行深度优先搜索。在搜索的过程中,我们将遇到的每一个陆地格子都标记为已访问过,以避免重复搜索。如果我们在搜索的过程中遇到了水域或者已经访问过的格子,我们就停止搜索。每次搜索完毕,岛屿数量加一。

同时,在搜索的过程中,我们需要检查这个岛屿上是否有宝藏。如果有宝藏,有宝藏的岛屿数量也加一。

最后,我们输出岛屿的总数量和有宝藏的岛屿的数量。

根据题目的要求,我们需要特别注意地图的边缘都是水域,因此在搜索的过程中需要注意边界条件。另外,由于题目的数据规模较大,我们还需要注意算法的效率,确保能够在规定的时间内完成任务。}

创作类型:
原创

本文链接:2.寻宝图给定一幅地图,其中有水域,有陆地。被水域完全环绕的陆地是岛屿。有些岛屿上埋藏有宝藏,这些有

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share