- 博客(27)
- 收藏
- 关注
原创 洛谷 P5318 【深基18.例3】查找文献
目前小 K 已经打开了编号为 1 的一篇文章,请帮助小 K 设计一种方法,使小 K 可以不重复、不遗漏的看完所有他能看到的文章。共 m+1m+1 行,第 1 行为 2 个数,nn 和 mm,分别表示一共有 n(n≤105)n(n≤105) 篇文章(编号为 1 到 nn)以及m(m≤106)m(m≤106) 条参考文献引用关系。- 这是一个通用的头文件,包含了 C++ 标准库中的所有常用头文件(在实际使用中不推荐,因为它会增加编译时间和可能的依赖冲突)。提供了更高效的随机访问和更简洁的内存管理。
2024-09-15 21:17:07 981
原创 【C++】std::forward_list
是 C++ 标准库中的一个单向链表容器。与std::list相比,只允许单向遍历,即只能从前往后访问元素。它的实现比std::list更轻量,因此在内存和性能方面通常更优,但缺少双向访问的能力。
2024-09-08 11:27:17 525
原创 【C++】std::list
std::list是 C++ 标准库中的一个双向链表容器,它是顺序容器中的一种。与其他顺序容器如和std::deque不同,std::list在插入和删除操作上具有显著的优势,特别是在容器的中间部分。
2024-09-08 11:26:12 569
原创 单源最短路径 洛谷【P4779】
给定一个 nn 个点,mm 条有向边的带非负权图,请你计算从 ss 出发,到每个点的距离。数据保证你能从 ss 出发到任意点。第一行为三个正整数 n,m,sn,m,s。 第二行起 mm 行,每行三个非负整数 ui,vi,wiui,vi,wi,表示从 uiui 到 vivi 有一条权值为 wiwi 的有向边。输出一行 nn 个空格分隔的非负整数,表示 ss 到每个点的距离。输入 #14 6 11 2 22 3 22 4 11 3 53 4 31 4 4输出 #10 2 4 3
2024-09-07 22:47:34 867
原创 【C++】 std::deque
std::deque是 C++ 标准库中的一个双端队列容器。它允许在两端进行高效的插入和删除操作,适用于需要在序列的两端进行频繁操作的场景。
2024-09-07 16:49:44 294
原创 【C++】std::vector
是一个非常常用的容器,主要用于存储和管理元素的集合,并且支持高效的随机访问和动态调整大小。是 C++ 标准库中的一个动态数组容器,它提供了一个可以动态调整大小的数组。方法会在末尾添加元素,新增的元素会被初始化为。方法会将多余的元素移除,以使大小变为 10。的当前大小已经大于等于 10,的大小调整为 10。的当前大小小于 10,
2024-09-07 16:47:59 434
原创 【C++】迭代器
代码实例: 代码分析(1)、头文件引入: 模板函数: 函数:输出:注意:在实际运行时,第二个示例需要在输入完数据后按回车键,以便 完成数据读取。(2)、在使用 函数对输入的整数进行排序时,需要按照以下步骤在键盘上操作以输入数据并查看排序结果:运行程序: 首先编译并运行程序。这将启动程序并等待你的输入。输入数据:结束输入:查看排序结果(再按enter键):
2024-09-07 13:50:15 323
原创 【C++】vector对象名不能当做数组的头指针使用
在 C++ 中,是一个动态数组,它提供了比传统数组更灵活和安全的功能。尽管的数据存储是连续的内存块,但它并不是普通数组,因此它在使用时有一些注意事项,尤其是在与数组头指针相关的操作上。
2024-09-05 21:57:15 383
原创 【C++】vector有关代码
是 C++ 标准库的命名空间前缀。它包含了所有标准库的组件,如。在使用这些标准库功能时,前缀。指明它们属于标准库。
2024-09-05 21:28:58 1173
原创 【C++】auto的解释
auto是 C++ 中的类型推断关键字。它让编译器自动推导变量的类型。使用auto可以使代码更简洁,尤其在处理复杂类型时特别有用。auto提高了代码的灵活性和可读性,特别是在类型复杂或需要保持一致性的情况下。
2024-09-05 21:22:17 186
原创 【C++】::的解析
是 C++ 中的作用域解析运算符(scope resolution operator)。它用于指定某个名字(如类、函数、变量等)所属的作用域或命名空间。的作用是帮助明确区分不同作用域中的名字,避免命名冲突和提高代码的可读性。
2024-09-05 21:17:05 344
原创 【C++】vector<int>
在 C++ 中, 是一个用于存储整数的动态数组,提供了灵活的内存管理和高效的随机访问。它是标准库中的一部分,定义在 头文件中。定义和初始化:添加元素:访问元素:修改元素:删除元素:遍历元素:代码说明:这里 是 中每个元素的副本。 :打印每个元素的值,并在值之间添加空格。
2024-09-03 20:58:04 305
原创 《数据结构》归并排序算法
是一种有效的排序算法,使用了的策略来将一个大问题分解成更小的子问题,并通过合并这些子问题的解来得到原问题的解。归并排序具有稳定性,适用于各种数据结构。
2024-08-25 18:39:41 925
原创 《数据结构》堆排序算法
end > 0;end--) {// 将最大值移到末尾// 调整剩余部分end > 0;end--)这是一个倒序循环,从数组的最后一个元素开始,逐步向前移动,直到第一个元素。这是为了将堆顶的最大元素(即数组的第一个元素)逐渐移动到当前“未排序”的数组末尾位置。交换堆顶元素(数组的第一个元素,最大值)和当前“未排序”部分的最后一个元素。这将最大值移到已排序部分的末尾。调整堆的剩余部分。交换后,堆的性质可能被破坏,需要通过AdjustDown函数来重新调整剩余部分以维持最大堆的性质。
2024-08-24 20:49:42 509
原创 《数据结构》快速排序算法
快速排序的平均时间复杂度为 (O(n \log n)),最坏情况下为 (O(n^2)),但在实践中通常表现良好。实现了快速排序算法中的划分步骤。递归地对基准元素左右两边的子数组进行排序。指针,直到它们相遇,从而完成划分操作。的部分进行划分,使得小于。的元素在左边,大于或等于。的元素在右边,并返回最终。
2024-08-23 21:07:49 167
原创 《数据结构》希尔排序算法
是一种改进的插入排序算法,能够提高插入排序的效率。它通过将数组分成若干个子序列,对每个子序列进行插入排序,从而使得数据更加有序。希尔排序的核心思想是通过逐步减少间隔来使得数据元素逐渐接近最终排序状态。
2024-08-22 17:48:41 892
原创 《数据结构》二分插入排序算法
是最大的可能插入位置。通过不断调整这两个边界,最终可以找到合适的插入位置。在代码中我们认为第一个元素为有序列表,从第二个元素开始遍历。5. right<left,将待插入元素插入left位置。1.a[0]--a[3]已经是有序表。用来确定目标插入位置。是最小的可能插入位置,
2024-08-22 14:19:38 297
原创 《数据结构》直接插入排序算法
将数组分为已排序和未排序两个部分,然后逐步将未排序部分的元素插入到已排序部分的正确位置。:从未排序部分取出一个元素,将它插入到已排序部分的合适位置,保持已排序部分的有序状态。:对未排序部分的每个元素重复插入操作,直到所有元素都被插入到已排序部分中。:将第一个元素视为已排序部分,剩下的元素为未排序部分。,因为插入排序是原地排序,不需要额外的存储空间。
2024-08-21 23:49:33 187
原创 《数据结构》拓扑排序算法
拓扑排序(Topological Sorting)是一种对有向无环图(DAG, Directed Acyclic Graph)进行排序的算法,它的目的是将图中的顶点线性排列,使得对于图中的每一条有向边(u, v),顶点u在排序中出现在顶点v之前。
2024-08-21 12:13:33 382
原创 《数据结构》Floyd算法
Floyd算法即为求每一对顶点之间的最短路径,应用“动态规划”思想。图结构*图存储方式为邻接矩阵*1.仅为两点之间的距离(存储矩阵)A(0)B(1)C(2)A(0)05AB12ACB17BA02BCC23CA无穷大CB02.加入中间点AA(0)B(1)C(2)A(0)05AB12ACB(1)7BA02BCC(2)3CA无穷大CBCA+AB=8
2024-08-20 17:57:20 1154
原创 《数据结构》最短路径Dijkstra算法
生长点ABCDEFP(A)=FAD(A)=130P(B)=FBD(B)=24P(C)=FCD(C)=10P(D)=——D(D)=无穷P(E)=——D(D)=无穷CP(A)=FAD(A)=130P(B)=FBD(B)=24P(D)=FCDD(D)=16P(E)=FCED(D)=62DP(A)=FAD(A)=130P(B)=FBD(B)=24P(E)=FCED(D)=62BP(A)=FBAD(A)=80P(E)=FBED(D)=50E。
2024-08-20 10:00:00 1519
原创 水仙花数 C语言
水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=13+53+33。本题要求编写程序,计算所有N位水仙花数。
2023-10-25 12:47:32 311
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人