C++ 程序使用 DFS 查找岛屿数量2024年8月28日 | 阅读 4 分钟 一个典型的算法问题,经常出现在图论和图像处理中,是需要一个 C++ 程序使用深度优先搜索 (DFS)来计算岛屿的数量。在本文中,我们将讨论使用 DFS 查找岛屿数量的 C++ 程序。 示例让我们举一个例子来演示如何使用 C++ 中的 DFS 查找岛屿数量。 输出 Number of islands: 3 说明 1. Solution 类 在这个例子中,Solution 类是确定这个类中包含多少岛屿的答案。numIslands 和 dfs 是这个类中存在的两个主要方法。 2. numIslands 方法 此方法用于定义二进制矩阵中的岛屿数量。它接受一个由 2D 向量网格表示的二进制矩阵作为参数。它初始化并设置为 0 一个名为 num 的整型变量,用于跟踪岛屿的种类。 3. 边界情况检查 检查输入网格的边界情况,即网格为空或包含空行。如果其中任何一个条件为 true,则返回 0,表示没有岛屿。 4. 网格迭代 在该方法中,使用嵌套循环遍历整个二进制矩阵。内部循环和外部循环都遍历列和行。 5. 岛屿的 DFS 在矩阵中,在坐标 (i, j) 处存在 “1”(表示陆地)表示新岛屿的开始。之后,该方法调用 dfs 方法进行深度优先搜索,以将整个岛屿标记为已访问。它在标记岛屿后增加 num 变量以计数该岛屿。 6. dfs 方法
7. main 函数 主函数包含示例二进制矩阵 (grid) 的定义。接下来,生成 Solution 类实例。使用 numIslands 技术计算岛屿数量。之后,输出是岛屿的总数。 8. 输出 该程序打印在二进制矩阵中发现的岛屿数量。 复杂度
结论总之,使用 DFS 计算岛屿数量的 C++ 程序是用于在二进制矩阵中定位“1”的连接簇的有用工具。它使用 DFS 算法有效地遍历矩阵并计算岛屿数量。 下一主题C++ 中的 Clamp |
当我们处理可能只有一个数据类型作为返回类型的函数时,我们可能需要返回多种数据类型。为了解决这个问题,我们正在学习返回各种值的概念……
阅读 4 分钟
数组定义为以连续方式存储的数据项的集合。数组存储相同类型的不同变量。由于它们存储在连续的位置,因此可以更容易地访问变量。例如,这是包含六个元素的数组。
阅读 6 分钟
什么是字符串字面量?匿名字符串[1]或字符串字面量是计算机程序源代码中字符串值的字面量。例如 x = "foo",其中 "foo" 是值为 foo 的字符串字面量,现代计算机语言经常使用带引号的系列...
阅读 3 分钟
std::adjacent_difference 是 C++ 中的一个函数,它计算序列中相邻元素之间的差值,并将结果存储在另一个序列中。它是标准模板库 (STL) 的一部分,在分析值从一个元素到另一个元素的_变化_时特别有用。
阅读9分钟
在本文中,您将了解 C++ 中的 std::stoll 函数及其语法和示例。std::stoll() 是什么?C++ 标准模板库 (STL) 包含 std::stoll() 函数,该函数专门用于将字符串转换为长整型数字。在处理...时非常有用。
阅读 4 分钟
C++ 的不同编译器 本文解释了许多与编译器相关的方面。在这里,我们描述了 C++ 语言与编译器之间的交互。为什么需要编译器?这里有一些解决方案;正如大家所知,计算机可以读取用由...组成的机器语言编写的指令...
阅读 4 分钟
map 字典类型是 C++ 的内置功能。它充当由键索引的值的容器,这意味着容器中的每个项都与一个键相关联。此外,C++ map 中的每个值都需要...
阅读 4 分钟
C++ 是一种强大而通用的编程语言。它支持广泛的编程范式,包括并发。并发是指程序中同时执行多个执行线程的能力。它能提高性能和响应能力,尤其是在涉及 I/O 绑定或……的应用程序中。
阅读 6 分钟
在 C++ 语言中,我们可以通过循环和 switch case 轻松地将数字转换为字符。在此程序中,我们从用户那里获取输入,并迭代此数字直到其为 0。在迭代过程中,我们将其除以 10,...
阅读1分钟
Kruskal 算法简介:在快速发展的科技和信息世界中,算法对于解决复杂问题至关重要。Kruskal 算法是一种简单且效果良好的出色算法。它源于图论,非常适合寻找连接……
11 分钟阅读
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India