自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 收藏
  • 关注

原创 从 0 到 1 打造你的第一个 Java 神器!手把手教你开发学生管理系统

Student怎么样,这个学生管理系统是不是很有趣?从用户认证到学生信息管理,每一个功能都凝聚着代码的智慧。虽然它还有很多可以优化的地方,但作为我的第一个项目,它承载着我对编程的热爱和探索。希望通过这篇文章,能让你对 Java 编程有更深入的了解,也期待你能在编程的世界里创造出更多属于自己的精彩!快来动手试试,打造一个独一无二的学生管理系统吧!

2025-06-26 16:22:46 482

原创 数论:数学王国的密码学

数论是纯粹数学的分支之一,主要研究整数的性质。在计算机科学中,数论尤其在密码学、算法设计和计算机安全等领域有着广泛的应用。数论中的一些基本概念包括质数、最大公约数、模运算等。RSA 是一种非对称加密算法,广泛应用于安全通信和数据加密。其原理基于数论中的大数分解难题。cpp// 简化版RSA加密示例int n;// 公钥和私钥的一部分int e;// 公钥指数int d;// 私钥指数// 生成大质数(简化版,实际应用需要更复杂的算法)// 生成RSA密钥对。

2025-05-20 23:01:25 1205

原创 红黑树:数据世界的平衡守护者

红黑树是一种自平衡的二叉搜索树,通过在每个节点上增加颜色属性(红色或黑色)并遵循五条规则来保持树的平衡。这些规则包括根节点为黑色、叶子节点为黑色、红色节点的子节点必须为黑色,以及从任一节点到其叶子节点的路径上黑色节点数相同。红黑树通过旋转和变色操作来维护平衡,确保搜索、插入和删除操作的时间复杂度稳定在O(log n)。在C++中,红黑树可以通过定义节点结构和相关操作来实现,常用于标准库中的map和set等数据结构。掌握红黑树的原理和应用,有助于提升算法和编程能力。

2025-05-15 23:02:21 1152

原创 哈希表:数据世界的超级索引

哈希表是一种高效的数据结构,通过哈希函数将键映射到存储桶中,实现快速的插入、查找和删除操作。哈希表的核心组成部分包括哈希函数、存储桶和冲突处理机制。冲突处理通常采用链地址法或开放地址法。在C++中,可以通过实现链地址法来构建哈希表,或者直接使用标准库中的unordered_map和unordered_set容器。哈希表在解决诸如“两数之和”等问题时表现出色,能够在平均O(1)的时间复杂度内完成操作。掌握哈希表的基本原理和使用方法,对于提升算法能力具有重要意义。

2025-05-13 22:57:43 1229

原创 滑动窗口:穿越数据的时光机

滑动窗口是一种高效的算法技巧,广泛应用于处理数组或字符串中的连续子数组或子串问题。它通过维护一个固定或可变大小的窗口,在数据上滑动,从而高效地解决各种查询和统计问题。滑动窗口的基本思想包括窗口的定义、滑动的过程以及维护窗口内的信息。其应用场景包括子数组或子串问题、固定大小窗口问题和可变大小窗口问题。通过C++代码示例,文章详细解释了如何实现固定大小滑动窗口(如计算移动平均值)和可变大小滑动窗口(如最长无重复子串)。此外,文章还通过例题讲解了如何利用滑动窗口解决具体问题,如计算字符串中长度为k的无重复字符子串

2025-05-11 22:55:49 1109

原创 线段树:数据结构中的超级英雄

线段树是一种高效的二叉树数据结构,专门用于处理区间查询和更新操作,如求和、求最大值或最小值等。每个线段树节点代表一个区间,根节点代表整个区间,叶子节点代表单个元素。线段树的特点包括其二叉树结构、区间划分能力以及在O(logn)时间复杂度内完成区间操作的高效性。本文通过C++代码示例详细介绍了如何构建线段树、进行区间查询和单点更新,并提供了一个具体的应用实例,展示了如何在数组上执行这些操作。通过学习线段树,我们可以更有效地解决涉及区间操作的问题,这对于算法学习和实践具有重要意义。

2025-05-09 23:35:54 1201 1

原创 C++ 算法学习之旅:从入门到精通的秘籍

定期复习和总结所学的知识,能够帮助我们加深对算法的理解和记忆。我们可以通过做笔记、写博客等方式来进行复习和总结。例如,每学习完一种算法,就写一篇博客记录自己的学习心得和体会。学习 C++ 算法是一个长期而艰苦的过程,但只要我们掌握了正确的学习方法,坚持学习并制定合理的目标,就一定能够在算法的世界里取得进步。让我们一起努力,成为算法高手,开启编程的新篇章!希望这篇文章能对大家有所帮助,让我们在 C++ 算法的学习之路上越走越远!

2025-05-08 23:05:03 2259

原创 排列组合算法:解锁数据世界的魔法钥匙

排列是指从给定的元素集合中取出若干元素,按照一定的顺序进行排列,不同的顺序视为不同的排列。比如,从{1, 2, 3}中取出 3 个元素进行排列,就有123132213231312321这 6 种不同的排列方式。组合是指从给定的元素集合中取出若干元素,不考虑元素的顺序,只要元素相同就视为同一种组合。比如,从{1, 2, 3}中取出 2 个元素的组合有{1, 2}{1, 3}{2, 3}这 3 种。排列和组合算法在计算机科学中有着广泛的应用,无论是在游戏开发、密码学、数据分析还是其他领域,都能发挥重要作用。

2025-05-07 22:49:26 960

原创 排序算法大冒险:八大高手的较量

这八位排序高手各有优缺点,在不同的场景下有不同的表现。冒泡排序、选择排序和插入排序比较简单,但时间复杂度较高,适用于小规模数据的排序。希尔排序、归并排序、快速排序和堆排序的时间复杂度较低,适用于大规模数据的排序。计数排序是一种非比较排序算法,适用于数据范围较小的情况。作为算法小白,我们要根据具体的问题选择合适的排序算法,才能在算法的江湖里游刃有余。希望大家通过这篇文章对这八种排序算法有了更深入的了解,让我们一起在算法的世界里继续探索吧!

2025-05-06 18:40:19 845

原创 用二进制魔法解锁复杂问题:状态压缩动态规划实战揭秘

想象你要规划一场盛大的派对,邀请了很多朋友,但朋友们之间有的互相认识,有的互不相识。这个问题中,每个朋友是否被邀请就是一个状态,而所有朋友的邀请状态组合起来就是一个复杂的整体状态。在 C++ 算法的奇妙世界里,状态压缩动态规划就像一位神秘的魔法师,它挥舞着二进制的魔杖,将复杂的状态信息压缩成简洁的数字,让看似棘手的问题迎刃而解。它的核心在于将离散的、多维的状态用一个整数表示,利用位运算高效地处理状态之间的转移,在解决涉及集合、子集等问题时,有着独特的优势。状态压缩动态规划的关键要素​。

2025-05-05 14:59:09 1100

原创 穿越数据森林与网络迷宫:树与图上动态规划实战指南

与线性动态规划相比,树与图上的动态规划更加复杂,因为它们的结构不再是简单的线性,而是具有分支和循环。在树与图上使用动态规划,就像是在错综复杂的迷宫中,通过标记一个个关键点(状态),找到从起点到终点的最佳路径(最优解)。在 C++ 算法的浩瀚宇宙中,树与图就像是神秘的迷宫和茂密的森林,充满了未知与挑战。图的动态规划通常需要处理节点之间复杂的连接关系,常见的有拓扑排序结合动态规划来解决有向无环图的问题,或者使用记忆化搜索处理一般图。给定一棵二叉树,找到从树中某个节点到其他节点的路径中,节点值之和最大的路径。

2025-05-03 21:43:14 2116

原创 从寿司拼盘到环形赛道:一文吃透区间与环形动态规划

动态规划(Dynamic Programming,简称 DP)就像一份 “烹饪秘籍”,它把复杂的问题分解成一个个小任务,每个小任务的结果可以被重复利用,避免了重复劳动。你是否曾在自助餐的寿司台前纠结,怎样才能用最短的时间夹走所有想吃的寿司?它的核心思想是将问题划分为若干个区间,通过合并小区间的解来得到大区间的解。环形动态规划与区间动态规划类似,但问题场景从线性的 “一排寿司” 变成了环形的 “寿司拼盘”。如果你在实践中遇到有趣的题目,或者对代码有更好的优化思路,欢迎在评论区分享,让我们一起把算法玩出花样!

2025-05-02 20:35:26 914

原创 从 “步步惊心” 到 “步步为赢”:揭秘线性动态规划的神奇魔法

线性动态规划,简单来说,就是在一个线性结构(比如数组)上,通过分析子问题的最优解,推导出整个问题的最优解。就像你要攀登一座高山,不用一下子考虑怎么登顶,而是先考虑每一步怎么迈出,通过解决一个个小问题,最终实现登顶的目标。在 C++ 算法的江湖里,线性动态规划就像是一门高深的 “步步为营” 的武学秘籍。给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。我们以经典的 “最大子序和” 问题为例来看看线性动态规划的代码实现。线性动态规划的核心要素​。

2025-04-30 21:48:25 596

原创 从青铜到王者!用 C++ 高精度算法手撕百万位数字的秘密

今天,我们就来揭开它的神秘面纱,手把手教你用代码驯服百万位数字的 “洪荒之力”!而高精度算法,能像人类手算一样,逐位处理数字,轻松应对天文数字!从加法、乘法到减法、除法,只要灵活运用数组模拟和逐位运算,再大的数字也能轻松拿捏。比如计算 123456789 + 987654321,我们不用一个变量硬扛,而是用数组按位存储,从个位开始逐位相加,逢十进一。二、高精度算法核心原理:化整为零​。四、进阶挑战:高精度乘法​。提交代码,轻松 AC!2. 高精度加法实现​。1. 数据结构设计​。3. 输入输出处理​。

2025-04-30 12:35:46 664

原创 字符串匹配界的 “特种兵”:KMP 算法的逆袭之路

而 KMP 算法会查看部分匹配表,发现模式串前 5 个字符 “ababa” 的前缀函数值为 3,于是直接将模式串向右移动 5 - 3 = 2 位,从 “aba” 之后继续比较,大大减少了比较次数。这个表就像是 KMP 算法的 “作战地图”,让算法在匹配过程中能快速调整模式串的位置,跳过那些已经确定不可能匹配的部分。整个匹配过程就像一场精心策划的寻宝游戏,KMP 算法凭借部分匹配表这个 “藏宝图”,在主串的 “迷宫” 中快速找到模式串的位置,既高效又精准。五、KMP 算法的 “高光时刻” 与 “软肋”​。

2025-04-29 21:51:44 1112

原创 C++ 字符串江湖:从青铜到王者的处理秘术

std::istringstream将输入的字符串stream化,std::getline按照指定的分隔符delimiter不断切割,将分割后的子串放入tokens向量中,最终返回一个包含所有子串的向量。reverseString函数中,通过双指针法,一个指针从字符串头部开始,一个指针从字符串尾部开始,不断交换两个指针指向的字符,直到两个指针相遇,完成字符串的反转。在 C++ 的世界里,字符串就像是江湖中的神秘密卷,藏着无数的秘密与挑战。三、字符串查找诀:千里追踪的定位术​。

2025-04-28 22:24:07 401

原创 C++ STL 奇幻冒险:容器界的魔法道具大揭秘

作为 C++ 小白,探索 STL(标准模板库)就像踏入一个神秘的魔法世界,里面的各种容器都是强大的魔法道具,能帮我们高效处理数据。今天,就让我们一起开启这场奇妙的 STL 冒险之旅,看看 vector、pair、list、queue、stack、map、set 这些魔法道具都有什么神奇功能!

2025-04-27 22:53:57 718

原创 数字江湖十二式:从模运算到素数筛的神秘法则

在数字的江湖里,每一个算法都是一门独特的武林绝学。今天,作为 C++ 小白闯荡 CSDN 算法江湖的第十二天,我要为大家揭秘模运算、素数筛、最小公倍数和最大公约数这些神奇的数字秘术,它们不仅能让代码更高效,还暗藏着令人拍案叫绝的智慧!

2025-04-26 23:33:34 696

原创 从城市交通规划到代码实现:探秘 C++ 最小生成树

而 Kruskal 算法像一个高瞻远瞩的战略家,从全局出发,先把所有边按权重排序,再一条条选,适合稀疏图(边比较少的图),时间复杂度是 O (E log E) ,E 是边数。从专业角度讲,对于一个带权连通无向图 G=(V, E) ,最小生成树是它的一棵生成树,并且这棵树的所有边权之和在 G 的所有生成树中是最小的。Kruskal 算法更像是从全局出发,先把所有路按成本从小到大排序,然后从成本最低的路开始,只要这条路不会让城市们形成环,就把它加入最终的道路系统,直到所有城市都连通。用代码施展这个魔法:​。

2025-04-25 23:20:31 605 1

原创 算法江湖奇遇记:二分查找与双指针的武林争霸

在算法的江湖中,各路奇招秘术层出不穷。在实际的算法问题中,我们需要根据问题的特点和数据的性质,灵活选择使用二分查找或双指针算法,甚至将它们巧妙结合,发挥出更强大的威力。二分查找的核心思想是,在有序数组中,每次将数组分成两部分,通过比较中间元素与目标元素的大小关系,决定下一步在左半部分还是右半部分继续查找,就像追踪箭不断缩小范围,直至命中目标。在twoSum函数中,left和right两个指针分别指向数组的开头和末尾,通过不断调整它们的位置,计算两指针所指元素之和,并与目标值比较,最终找到满足条件的元素对。

2025-04-24 22:36:17 835

原创 模拟与暴力:C++ 编程中的实用技法

在 C++ 编程的精彩世界里,模拟和暴力算法宛如两把利刃,虽质朴却威力无穷。它们能将复杂的问题逐步拆解,以直观的方式呈现出解决方案。接下来,让我们一起深入探寻这两种算法的奥秘,并结合 C++ 代码示例进行学习。

2025-04-23 23:07:04 730

原创 C++ 小白的逆袭之路(7):用贪心算法,做算法世界的 “精致利己主义者”

明确 “贪心策略”:找到每一步的 “最优选择标准”,比如性价比、时间早晚、数值大小。验证可行性:确保每一步的最优选择,不会导致后续无解(有些问题不适合贪心算法)。简单高效:贪心算法通常时间复杂度低,适合处理大规模数据。作为 C++ 小白,掌握贪心算法就像解锁了一把万能钥匙,能轻松打开许多算法题的大门。下次遇到 “选最优” 的问题,不妨试试这个 “精致利己” 的策略!

2025-04-22 21:56:26 570

原创 C++ 动态规划算法:从入门到进阶,解锁高效编程新境界

通过这种自底向上的方式,我们可以在遍历整棵树的过程中计算出每个节点的 dp 值,最终得到根节点的 dp 值,即为所求的最大值。对于每个元素 nums [i],我们检查它前面的所有元素 nums [j](j < i),如果 nums [i] > nums [j],说明可以将 nums [i] 添加到以 nums [j] 结尾的递增子序列后面,从而更新 dp [i] = max (dp [i], dp [j] + 1)。以下是 C++ 代码实现:​。以下是使用滚动数组优化后的 C++ 代码:​。

2025-04-21 22:27:53 870

原创 C++ 小白逆袭指南:前缀和与差分算法的奇幻冒险

在 C++ 的算法江湖中,前缀和与差分算法就像是两位低调却实力超群的 “数学界超级英雄”,它们看似普通,却能在处理数据的关键时刻大放异彩。作为 C++ 小白,掌握了这两位 “英雄”,就像拥有了秘密武器,能轻松攻克许多复杂的数据处理难题。今天,就让我们一起开启前缀和与差分算法的奇幻冒险之旅!

2025-04-20 22:44:39 1006

原创 从迷宫探险到算法世界:DFS 与 BFS 的探险之旅

DFS 和 BFS 这两位算法世界里的神奇特工,以它们独特的方式帮助我们解决了无数难题。它们就像是两把不同的钥匙,在编程的锁孔里转动,开启一扇扇通往高效解决方案的大门。作为 C++ 小白的我们,掌握了它们,就仿佛拥有了一把开启算法宝藏的钥匙。在未来的编程之旅中,让我们继续和 DFS、BFS 一起,探索更多未知的奇妙算法世界吧!

2025-04-19 16:57:05 867

原创 C++ 小白的动态规划破茧之路:实战与成长

从对动态规划懵懂无知,到如今能运用其解决实际问题,我收获的不仅是知识,更是面对难题的勇气与自信。未来在 C++ 算法的征途上,挑战必然不断,但我会怀揣热爱与求知欲,持续学习、实践。他人的评论和建议,如明灯照亮我代码中的不足,也让我接触到新的思路。,让每一个位置能借助下方相邻位置的最优解,层层递推,最终塔顶数字就是最大路径和。:Michael 喜欢滑雪,滑的区域需向下倾斜,他想知道一个区域中最长的滑坡。表示行的数目,后面每行是数字金字塔特定行包含的整数,输出单独一行是可能得到的最大的和。

2025-04-18 15:03:08 1087

原创 小白也能轻松上手的 C++ 简单动态规划:开启编程进阶之旅

动态规划其实就是一种解决问题的思想和方法。简单来说,当我们面对一个复杂问题时,如果这个问题可以分解成多个相互关联的子问题,而且子问题之间存在重复计算的情况,那么动态规划就能大显身手。它通过记录子问题的解,避免重复计算,从而高效地解决整个问题。举个生活中的例子,你要去一个地方,有很多条路可以走,每条路又会有不同的分支。如果每次都重新去探索所有可能的路径,那就会浪费很多时间。

2025-04-17 23:16:38 2052

原创 从零起步:用 Dijkstra 算法破解带权图最短路径谜题

从一开始对算法题的畏惧,到一步步理解 Dijkstra 算法的原理,再到亲手实现代码,这个过程虽然充满了艰辛,但每一次小小的突破都让我兴奋不已。Dijkstra 算法的核心思想其实并不难理解,它采用贪心策略,从起始点开始,每次都选择距离起始点最近且未确定最短路径的点,然后用这个点去更新其他相邻点到起始点的距离。就好像在一个城市的交通网络中(把地点看成点,道路看成边,道路长度看成权值 ),我们要找到从一个地方到其他所有地方的最短距离,Dijkstra 算法会一步步帮我们找到答案。主函数里,先读取图的点数。

2025-04-16 23:09:22 651 1

原创 图论算法初窥:Floyd 与 Bellman - Ford 的奇妙之旅

Floyd 算法和 Bellman - Ford 算法虽然只是图论算法大家族中的一小部分,但它们各自有着独特的应用场景和魅力。在学习过程中,我也深刻体会到算法的精妙之处,每一行代码背后都蕴含着前辈们的智慧。当然,我深知自己对这两个算法的理解还只是皮毛,在未来的学习中,还需要不断深入研究,去探索更多算法的奥秘,也希望能和大家一起交流进步,在算法的世界里越走越远。

2025-04-15 23:00:23 1023 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除