自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

半截诗的博客~

一星陨落 黯淡不了星空灿烂 一花凋零 荒芜不了整个春天

  • 博客(253)
  • 资源 (2)
  • 收藏
  • 关注

原创 【优选算法篇】拓扑排序——逻辑先后与任务依赖的终极拆解

摘要:拓扑排序的逻辑枷锁与解法 本文探讨拓扑排序在依赖关系中的应用,通过两个经典问题展示其核心逻辑: 课程表问题:将课程建模为有向图节点,依赖关系为边。通过BFS统计入度并逐步解除依赖,判断是否存在可行学习路径或返回具体顺序。若处理节点数不足总数,则存在环。 火星词典问题:通过比较相邻单词的首个差异字符建立字母顺序依赖。需处理非法前缀情况,最终通过拓扑排序推导字母顺序,若结果长度不足则说明存在环。 关键点在于:将实际问题转化为有向无环图,通过入度统计和BFS逐步解除依赖,既解决顺序问题又能检测逻辑死锁(环)

2026-03-30 20:55:30 49

原创 【优选算法篇】多源 BFS——涟漪齐发,全局最优

本文介绍了几道基于多源广度优先搜索(BFS)的矩阵问题解法。第一题"01矩阵"通过将0作为源点进行扩散,计算每个1到最近0的距离;第二题"飞地数量"从边界1出发标记可达区域,统计未被标记的陆地数量;第三题"地图最高点"将水域作为源点,计算各点与最近水域的距离作为高度。这三题均采用多源BFS策略,通过队列实现波纹式扩散,确保首次访问即为最短路径,时间复杂度为O(MN)。

2026-03-30 13:39:49 182

原创 【优选算法篇】BFS 解决最短路——寻找最优路径的真谛

本文探讨了BFS在最短路径问题中的应用原理和实战案例。核心原理指出,BFS通过层级扩散保证首次访问目标点时路径最短,适用于等权图问题。文章通过几个LeetCode题目进行实战分析:(1)迷宫出口问题通过坐标状态和层序遍历实现步数统计;(2)基因变换问题将字符串视为节点,利用哈希集合优化查询;(3)单词接龙问题通过字符替换降低时间复杂度。三个案例均采用BFS框架,通过状态定义、转移规则和边界处理建模问题,验证了BFS在等权最短路搜索中的高效性和普适性。

2026-03-29 21:56:44 266

原创 【优选算法篇】BFS 解决 FloodFill—矩阵中的涟漪效应

本文介绍了四种基于广度优先搜索(BFS)的二维网格问题解法:1)图像渲染(Flood Fill)通过BFS实现像素点染色;2)岛屿数量统计采用"发现即标记"策略;3)岛屿最大面积在BFS过程中累加计数;4)被围绕区域问题运用"正难则反"思想,从边界反向搜索。这些算法都遵循相似的BFS模板,通过队列实现扩散搜索,并利用标记避免重复访问,展示了BFS在连通性问题中的高效性和通用性。

2026-03-28 15:09:11 338

原创 【优选算法篇】优先级队列(堆/Heap)——极值的瞬间捕获

本文探讨了堆(Heap)在解决动态集合问题中的高效应用,通过四个典型题目展示了堆的核心思路和实现技巧:1)使用大根堆模拟粉碎石头过程;2)用小根堆维护数据流中的第K大元素;3)通过自定义比较器实现多维度排序获取高频单词;4)利用双堆平衡机制高效计算数据流中位数。这些案例揭示了堆在处理实时数据、优先级排序和动态统计中的独特优势,时间复杂度均优化至O(logN)级别。

2026-03-27 20:50:14 301

原创 【优选算法篇】队列与宽度优先搜索(BFS)——层层递进的视野

本文介绍了BFS(广度优先搜索)在解决树结构问题中的四种典型应用:N叉树的层序遍历、二叉树的锯齿形层序遍历、二叉树的最大宽度计算以及每层最大值查找。通过队列控制层级处理,结合索引编号和反转技巧,高效解决各类层序相关问题。代码示例展示了如何利用BFS模板处理不同变体问题,包括处理N叉树、锯齿形遍历、节点编号溢出问题以及逐层最大值统计。这些方法体现了BFS"涟漪式扩散"的特点,能够系统性地掌控全局树结构信息。

2026-03-27 15:17:28 634

原创 【项目篇】从零手写高并发服务器(十):性能测试与项目总结

本文介绍了使用webbench工具对HTTP服务器进行性能测试的全过程。首先讲解了webbench的安装方法,然后详细说明了测试前的准备工作,包括编译优化和系统参数调整。通过4轮不同并发量(100-5000)的压测实战,展示了测试结果数据并进行分析,指出同机测试的资源竞争问题。最后给出了实测数据汇总表,显示在2核4G服务器上,100并发时QPS可达3238,5000并发时降至29.7。文章还讨论了影响性能的关键因素,如CPU核心数、线程配置等,为服务器性能优化提供了参考方向。

2026-03-26 18:30:49 382

原创 【项目篇】从零手写高并发服务器(九):HTTP协议支持——从TCP到应用层

本文摘要:文章详细介绍了如何从TCP服务器升级实现HTTP协议支持,构建完整的HTTP服务器。内容涵盖HTTP协议格式回顾、请求解析状态机设计,以及实现过程中所需的工具函数(字符串分割、文件读写、URL编解码等)。通过分步解析请求行、头部和正文,将原始字节流转换为结构化HTTP请求,最终实现从传输层到应用层的跨越。读者可跟随教程逐步完成HttpRequest、HttpResponse等模块开发,最终构建一个能处理网页请求的功能性HTTP服务器。

2026-03-25 18:35:50 1113

原创 【项目篇】从零手写高并发服务器(八):Connection、Acceptor与TcpServer——第一个可运行的服务器

本文介绍了从零手写高并发服务器的关键步骤,重点实现了Connection、Acceptor和TcpServer模块。首先引入Any类作为协议上下文容器,然后详细设计了Connection类,包含Socket、Channel、缓冲区等核心组件,并实现了连接状态管理和事件回调机制。通过将这些模块组装到TcpServer中,最终构建出第一个可运行的Echo服务器。文章采用循序渐进的方式,从基础组件到完整服务器实现,提供了清晰的代码示例和架构图示。

2026-03-25 09:00:00 727

原创 【优选算法篇】栈结构——后进先出的“时空隧道”

摘要 本文系统讲解了栈数据结构的核心应用场景与典型题目解法。栈的核心逻辑是处理"最近相关性"问题,包括消除匹配(如相邻重复字符)、撤销操作(如退格处理)和嵌套结构(如括号解码)。通过四个经典例题:删除相邻重复项、比较含退格字符串、基本计算器和字符串解码,详细展示了栈的实战应用技巧。特别指出在字符串处理时可直接用字符串模拟栈以提高效率,并针对不同场景提供了双栈、运算符优先级处理等优化策略。所有解法均配以清晰的逻辑拆解和C++代码实现,帮助读者深入理解栈的消除与匹配本质。

2026-03-25 01:13:41 835

原创 【项目篇】从零手写高并发服务器(七):定时器TimerWheel与线程池

本文摘要: 本文介绍了高并发服务器中定时器和线程池的实现。主要内容包括:1)将TimerWheel时间轮定时器集成到EventLoop中,使用timerfd每秒触发tick;2)实现TimerTask类封装定时任务,利用智能指针管理生命周期;3)设计TimerWheel类实现时间轮算法,支持定时任务的添加和执行;4)实现EventLoopThread和EventLoopThreadPool,为服务器提供多线程处理能力。这些组件共同构成了高并发服务器的核心架构。

2026-03-24 14:36:05 360

原创 【优选算法篇】字符串模拟与中心扩散——于方寸间见真章

本文介绍了四种字符串处理算法:1)最长公共前缀的纵向扫描法,通过逐列比较字符;2)最长回文子串的中心扩散法,从单/双字符中心向两侧扩展;3)二进制求和的竖式加法,模拟进位过程;4)字符串相乘的无进位相乘法,先计算各位置乘积再统一处理进位。这些算法通过巧妙运用字符串遍历、对称扩展和进位处理等技巧,高效解决了常见的字符串处理问题,展示了字符串操作中模拟逻辑与几何对称的思想精髓。

2026-03-24 12:23:53 359

原创 【优选算法篇】哈希表——空间换时间的极致艺术

本文介绍了哈希表在算法中的高效应用,通过多个LeetCode题目展示其核心技巧。主要内容包括:1)两数之和问题通过边存边找的贪心策略优化;2)字符重排判定采用计数抵消法;3)重复元素检测利用哈希记录最近下标;4)字母异位词分组通过排序归一化特征实现分类。哈希表不仅能快速查找,还能存储复杂规律,针对不同场景可灵活选择数组或unordered_map实现。这些案例展示了哈希表在建立混沌数据与瞬间响应之间的桥梁作用。

2026-03-22 21:40:15 564

原创 【优选算法篇】链表模拟与双指针——指针间的华丽舞步

本文介绍了四种链表操作技巧:1)两数相加通过模拟进位实现;2)两两交换节点使用四指针法;3)重排链表采用找中点、反转、合并三步法;4)合并K个链表推荐优先队列实现多路归并。这些方法通过指针的巧妙移动和重组,展现了链表处理的核心思想。

2026-03-22 01:24:30 925

原创 【优选算法篇】归并排序模型——从基础排序到逆序对统计

本文围绕归并排序的“合并阶段”展开,指出其真正价值不仅在于排序,更在于借助左右区间的有序性,对跨区间关系进行成批统计,从而将原本 (O(N^2)) 的暴力枚举优化为 (O(N \log N))。文章首先介绍归并排序的基本分治流程;随后以逆序对为例,说明如何在升序归并中一次性统计左区间剩余元素;再结合“右侧小于当前元素的个数”问题,讲解通过 index 数组绑定原始下标、在降序归并中为每个元素单独记账;最后分析翻转对问题,指出其判断条件与排序逻辑不一致,因此应采用“先统计、再归并”的解耦思路。

2026-03-20 11:20:21 370

原创 【项目篇】从零手写高并发服务器(六):EventLoop事件循环——Reactor的心脏

本文介绍了高并发服务器中EventLoop事件循环的核心设计与实现。EventLoop作为Reactor模式的心脏,主要负责事件分发和线程间任务调度。其核心逻辑包括:通过Poller监控事件就绪、处理活跃Channel事件、执行任务队列任务。针对多线程环境下的线程安全问题,采用eventfd机制实现线程间唤醒,确保任务在目标线程安全执行。文章详细讲解了EventLoop类的完整实现,包括eventfd创建与读写、任务队列管理、线程安全控制等关键功能,为构建高性能服务器奠定了重要基础。

2026-03-19 20:55:01 388

原创 【优选算法篇】快速排序模型——从数组划分到快速选择

本文探讨了优化快速排序算法的关键技术:三指针划分与随机化基准选择。针对传统快排处理重复元素或有序数组时效率低下的问题,提出将数组划分为"小于"、"等于"、"大于"三块,并通过随机选择基准来避免最坏情况。文章以LeetCode题目为例,详细解析了三指针算法(荷兰国旗问题)的实现原理,并给出了万能快排模板代码。此外,还介绍了快速选择算法在O(N)时间复杂度内解决第K大元素问题的应用,通过数学归纳证明了其效率。这些优化技术显著提升了排序算法在各类场景下的性能表现。

2026-03-19 18:12:32 401

原创 【项目篇】从零手写高并发服务器(五):Channel事件管理与Poller模块

本文介绍了高并发服务器开发中的核心模块——Channel事件管理与Poller模块。Channel负责管理单个文件描述符的事件监控和回调处理,包括可读、可写、错误等事件类型。Poller模块则封装了epoll系统调用,实现对多个文件描述符的事件监控。文章详细展示了这两个模块的C++实现代码,包括Channel的事件回调设置和Poller的epoll操作封装。这两个模块共同构成了Reactor模式的事件处理核心,为高并发服务器提供高效的事件驱动机制。通过合理的模块划分和接口设计,实现了对底层epoll的封装。

2026-03-18 21:24:08 531

原创 【项目篇】从零手写高并发服务器(四):Socket套接字模块

本文介绍了从零开始手写高并发服务器的Socket套接字模块实现。首先回顾了TCP通信流程和需要封装的核心功能,包括创建套接字、绑定地址、监听连接等基础操作。文章重点展示了Socket类的完整实现,包括SIGPIPE信号处理、套接字创建、地址绑定、连接管理、数据收发等核心功能封装。特别强调了网络编程中SIGPIPE信号的默认终止行为及其处理方式,通过静态全局对象确保信号处理在程序启动阶段执行。Socket类提供了阻塞和非阻塞两种模式的收发接口,为后续高并发服务器开发奠定了基础。该模块封装简化了网络编程基础操作

2026-03-18 01:09:33 257

原创 【项目篇】从零手写高并发服务器(三):日志宏与Buffer缓冲区模块

本文介绍了高并发服务器开发中的日志宏和Buffer缓冲区模块实现。日志宏提供了带时间戳、线程ID和文件行号的调试输出功能,支持不同日志级别。Buffer模块采用线性缓冲区设计,通过读写指针管理数据,解决TCP粘包/拆包问题。缓冲区支持动态扩容和空间整理,为后续网络通信提供基础支持。文章包含完整的代码实现和测试验证,适合逐步构建服务器核心功能。

2026-03-17 20:06:53 405

原创 【贪心算法】专题(六):降维打击与错位重构的终极收官

本文探讨了四种高级贪心算法策略,通过降维、反向排除和错位插空等技巧解决复杂问题。首先在俄罗斯套娃信封问题中,通过巧妙排序将二维问题降为一维LIS问题;其次在可被三整除的最大和问题中,采用反向排除法根据余数选择最优解;最后在条形码和字符串重构问题中,利用错位插空法确保相邻元素不同。这些策略展示了贪心算法在复杂场景下的灵活运用,能有效提升解题效率。

2026-03-15 23:01:16 517 1

原创 【贪心算法】专题(五):逆向思维与区间重叠的极致拉扯

本文深入探讨贪心算法在数学与几何问题中的高阶应用,重点解析逆向思维和区间重叠两大经典场景。通过5道高频题目,作者揭示了贪心策略背后的数学本质: 逆向思维(坏了的计算器):当正向操作复杂时,逆向推导往往具有数学确定性,通过严格证明偶数除以2的最优性。 区间处理: 合并区间:按左端点排序,贪心拓展最大右边界求并集 无重叠区间:同样排序但保留最小右端点,用替换论证证明其最优性 文章强调摒弃死记硬背,通过数学证明掌握算法本质,并提供了清晰的C++实现。两种区间问题虽然相似,但核心逻辑完全相反(最大vs最小右边界),

2026-03-15 19:08:59 396 1

原创 【贪心算法】专题(四):区间跳跃与数学极值的巅峰博弈

本文探讨了五个贪心算法问题,通过数学证明和策略分析展示了如何高效解决区间覆盖和跳跃游戏等挑战。核心思想包括:在最优除法中将后续数字转为分子以获得最大值;跳跃游戏中通过维护最远边界减少步数;加油站问题通过段式排查无效起点。这些策略通过数学证明确保了正确性,并提供了对应的C++实现代码,展示了贪心算法在实际问题中的应用。

2026-03-15 13:16:18 619

原创 【贪心算法】专题(三):排序、博弈与区间的贪婪法则

文章摘要:本文探讨了如何通过排序建立贪心算法的优势,重点解析了三道典型题目。首先通过索引排序解决按身高排序问题;其次运用田忌赛马策略证明优势洗牌的最优解法;最后利用字符频次统计构建最长回文串。核心思想表明:排序是贪心算法的重要前置步骤,能有效将局部最优转化为全局最优解。文中每个问题都配有C++代码实现和严谨的数学证明。

2026-03-13 21:16:19 423

原创 【贪心算法】专题(二):单调区间的收割与分类极值的贪婪

本文探讨了贪心算法在序列问题中的应用,重点分析了趋势判断与分类贪心的策略。通过四个典型案例:递增三元子序列、最长连续递增序列、单次买卖股票和无限次买卖股票,展示了贪心算法的核心思想。在单调区间完全收割利润,在极值点分类讨论,利用差分思想简化复杂问题。文章提供了严格的数学证明和直观的生活类比,并给出C++代码实现,帮助读者掌握贪心算法的精髓。

2026-03-13 11:38:51 417

原创 【贪心算法】专题(一):从局部到全局,数学证明下的最优决策

本文探讨了贪心算法的数学原理与应用,通过典型例题展示其核心逻辑。首先在柠檬水找零问题中,运用交换论证法证明了优先使用10元找零的正确性;其次在数组减半问题中,通过反证法验证每次操作最大值的策略最优性;最后在最大数问题中,严格证明了字符串拼接排序规则的传递性。每个案例均结合数学证明与代码实现,强调贪心算法必须建立在严谨的数学推导基础上,而非单纯直觉判断。

2026-03-12 22:21:47 391

原创 【递归、搜索与回溯】专题(八):记忆化搜索——从暴力递归到动态规划的桥梁

本文介绍了记忆化搜索技术及其应用,通过斐波那契数列、不同路径和最长递增子序列三个经典案例,展示了如何将暴力递归优化为高效算法。记忆化搜索通过在递归过程中存储中间结果(备忘录),避免了重复计算重叠子问题,使时间复杂度从指数级降至多项式级。文章通过对比记忆化搜索与动态规划的实现方式,揭示了二者本质相同但思路相逆的关系(自顶向下vs自底向上),并提供了完整的C++代码实现,帮助读者理解如何通过"查字典+写日记"的机制提升算法效率。

2026-03-11 17:31:47 436 1

原创 【递归、搜索与回溯】专题(七):FloodFill 算法——勇往直前的洪水灌溉

摘要:FloodFill算法是一种用于处理二维网格连通区域的高效算法,核心思想是通过DFS/BFS标记访问过的区域且不恢复现场,确保每个格子只处理一次。文章通过7道经典题目(如图像渲染、岛屿数量、岛屿最大面积等)详解其应用场景与实现要点:1)图像渲染通过直接修改原数组颜色避免重复访问;2)岛屿数量采用"沉岛战术"标记连通块;3)岛屿最大面积通过DFS累加区域大小。算法时间复杂度稳定为O(M×N),适用于连通块统计、区域染色等问题。代码示例展示了DFS实现的关键步骤与边界处理。

2026-03-10 20:52:03 517

原创 【递归、搜索与回溯】专题(六):回溯算法综合大练兵(下)—— 二维网格与终极试错

本文探讨了二维网格中的回溯算法应用,重点解析了N皇后和数独两类经典问题。对于N皇后问题,通过行降维策略和数学规律(主副对角线判断)高效解决冲突检测;数独问题则展示了3x3宫格的坐标映射技巧。文章强调二维回溯的核心在于方向控制、状态标记与解空间管理,并提供了C++代码实现。掌握这些技巧可有效应对复杂网格搜索问题。

2026-03-10 15:47:45 354 1

原创 【递归、搜索与回溯】专题(五):回溯算法综合大练兵(中)—— 组合总和、优美排列与状态机

本文探讨回溯算法在两类典型问题中的应用:目标和问题与组合总和问题。在目标和问题中,通过隐式恢复现场(利用函数参数自动拷贝)简化了传统回溯的push/pop操作,构建二叉树模型解决二选一问题。组合总和问题则采用多叉树模型,通过枚举选取次数实现无限制重复选择,并引入批量恢复现场机制(循环内批量push/pop)。两种方法均通过状态树可视化(ASCII图解)和数学剪枝(如k*num≤target)优化搜索过程,强调理解状态分支比记忆代码更重要。

2026-03-09 20:31:59 381 1

原创 【递归、搜索与回溯】专题(四):回溯算法综合大练兵(上)—— 子集、排列与组合的进阶

本文摘要: 《回溯算法进阶实战(上)》聚焦回溯算法的核心难点——剪枝与状态维护,通过两道经典题目展开深度解析。第一题"子集异或总和"利用异或的自反性,以单变量path记录状态,实现高效子集遍历与结果累计;第二题"全排列II"针对重复元素排列问题,提出排序预处理+树层剪枝策略,通过check数组确保相同元素按物理顺序使用,避免重复分支。两题均配以详细的状态树图解和C++代码实现,展现回溯算法在实际问题中的灵活应用与优化技巧。

2026-03-08 21:51:14 393 1

原创 【递归、搜索与回溯】专题(三):回溯算法入门——穷举、试错与恢复现场

回溯算法是一种通过试错和撤销来探索所有可能解的算法,本质上是深度优先搜索(DFS)在状态树上的应用。其核心在于构建选择路径,并在递归后恢复现场,以便尝试其他选择。文章通过全排列和子集问题展示了回溯的两种经典应用:全排列问题需要构建排列树,每一步选择未使用的数字;子集问题则采用选与不选的二叉树模型或多叉树模型。两种问题都遵循"做出选择→递归→撤销选择"的模板,其中恢复现场是关键步骤,确保每次递归返回后能正确尝试其他路径。掌握这两种问题的解法,可以深入理解回溯算法的核心思想。

2026-03-08 12:51:54 379 2

原创 【递归、搜索与回溯】 专题(二):二叉树中的深搜——在树枝间跳跃的精灵

本文探讨了二叉树与深度优先搜索(DFS)的天然契合性。二叉树递归结构使其完美适配DFS遍历,根据处理节点的时机分为前序、中序和后序三种遍历方式。通过三道经典题目展示了不同遍历方式的应用:计算布尔二叉树值(后序遍历)、求根到叶节点数字和(前序遍历)以及二叉树剪枝(后序遍历)。文章采用生活化类比(职场汇报、击鼓传花)生动解析了递归思维,并提供了C++代码实现。重点强调了后序遍历在需要自底向上信息汇总场景中的关键作用。

2026-03-07 20:15:54 616 9

原创 【递归、搜索与回溯】专题(一):递归的本质——宏观视角的“甩锅”艺术

本文通过汉诺塔、合并有序链表和反转链表三个经典案例,生动讲解了递归的核心思想。作者将递归比作"甩锅"机制:明确边界条件作为递归出口,将复杂问题分解为当前步骤和子问题,并信任递归函数能正确处理剩余部分。文章用生活化的类比和ASCII图解,详细展示了如何用递归思维解决问题,并提供了C++代码实现。核心在于建立对递归的信任,避免陷入逐层展开的思维陷阱,只需关注当前层的逻辑处理。

2026-03-07 08:00:00 785

原创 【项目篇】从零手写高并发服务器(二):前置知识——bind、定时器与时间轮

本文介绍了构建高并发服务器所需的三个核心前置技术:1)C++11的bind函数适配器,用于参数绑定和回调管理;2)Linux的timerfd定时器机制,实现高效定时检测;3)时间轮算法思想,优化大量定时任务的管理效率。通过示例代码演示了bind在任务池中的应用、timerfd的基本用法,并阐述了时间轮通过环形数组和指针移动来高效处理定时任务的原理。这些技术为后续实现高性能服务器中的连接超时管理等功能奠定了基础。

2026-03-06 13:23:38 360 1

原创 【动态规划】专题(十一):高阶模型——多维、排列与数学

本文探讨了动态规划(DP)中突破维度限制的两种高级背包问题。首先介绍二维费用的01背包问题(如LeetCode 474题),通过增加状态维度处理多个限制条件(如0和1的数量限制)。其次分析了带利润下限的二维费用问题(如LeetCode 879题),通过状态压缩和逆序遍历优化空间复杂度。两种问题均展示了如何通过调整状态定义和转移方程来应对复杂约束条件,并提供了朴素三维实现和空间优化版本的具体代码实现。文章揭示了DP处理多维约束的核心思想:合理设计状态表示,灵活应对不同维度的上下限要求。

2026-03-06 09:38:54 401

原创 【动态规划】专题(十):完全背包模型——从二维到一维的进化

本文介绍了完全背包问题的解法,重点分析了其与01背包的核心区别:完全背包中物品可以无限次选择。通过二维和一维两种动态规划解法,详细阐述了状态转移方程的设计思路,特别是空间优化时正序遍历的原因。文章以零钱兑换问题为例,展示了完全背包的实际应用,并提供了清晰的代码实现。关键点在于理解状态转移方程dp[i][j] = max(dp[i-1][j], dp[i][j-v]+w)的推导过程,以及优化为一维数组后必须正序遍历才能正确更新的原理。

2026-03-05 15:02:10 381 4

原创 【动态规划】专题(九):01 背包模型——选与不选的终极博弈

本文介绍了01背包问题的两种形态及其解法。01背包问题要求在有限容量下选择物品使总价值最大,分为"不超过容量"和"恰好装满"两种情况。文章详细讲解了二维动态规划解法,包括状态定义、转移方程和初始化要点,并进一步优化为一维空间解法,强调了逆序遍历的必要性。最后将分割等和子集问题转化为01背包问题,展示了算法在实际问题中的应用。全文包含完整代码示例,适合动态规划初学者系统学习背包问题的解题思路。

2026-03-04 23:26:40 584 5

原创 【动态规划】专题(八):双数组问题——LCS 模型及其变种

本文介绍了处理两个字符串关系的四种动态规划问题。首先阐述了双数组DP的通用套路,包括状态定义、转移方程和初始化方法。接着详细讲解了四个经典问题:最长公共子序列(LCS)的核心思路和代码实现;不相交的线问题与LCS的等价关系;不同子序列问题的状态转移和边界条件处理;以及通配符匹配的特殊处理。每个问题都给出了清晰的解题思路和对应的代码实现,展现了如何运用二维DP表解决字符串匹配类问题。

2026-03-04 08:00:00 365 2

原创 【动态规划】专题(七):回文串问题——对称之美与区间 DP

本文介绍了区间动态规划(DP)在回文串问题中的应用。首先通过预处理构建dp[i][j]表,判断子串s[i...j]是否为回文,填表时采用从中心向两边扩散的策略。随后展示了四种典型问题的解法:统计回文子串数量(647题)、寻找最长回文子串(5题)、判断能否分割为三个回文子串(1745题)以及求最少分割次数(132题)。其中132题结合了区间DP和线性DP,通过预处理回文信息后,用f[i]记录前i个字符的最少分割次数。这些案例展示了区间DP"由中心向两端扩展"的通用解题思路。

2026-03-02 22:17:20 903 10

大学生活+学习规划+电脑操作与专业选择+新生全面成长指南

踏入大学,是人生的一次重要转折。这份为新生量身打造的指南,将带领你从初入校园的迷茫到自信满满地开启全新的学习与生活旅程。无论你对大学生活充满期待,还是对未来充满未知,这套资源都将是你成长路上的坚实依靠。 从入学初期的必备常识到大学四年的全方位规划,从电脑操作的基础扫盲到专业领域的深度解析,我们为你准备了一切你可能需要的宝贵经验与实用技巧。资源涵盖学习方法、时间管理、电脑技能提升,以及适应新环境的社交建议,帮助你迅速找到属于自己的大学节奏。通过丰富的内容和详实的引导,你将掌握高效学习的秘诀,合理规划时间,全面提升自我。 无论你是对学术规划有所困惑,还是对未来职业发展充满憧憬,这份资源都将为你提供从基础到深度的指导,让你从容应对大学生活中的每一次挑战。除此之外,丰富的应用推荐与操作指南也将助力你轻松驾驭现代科技,提升学习效率。 大学,是一次崭新的起航,而这套资源,将成为你乘风破浪的导航灯,帮助你在人生的这片广阔海洋中,找到属于自己的方向。愿你在这段旅程中,不断突破自我,迎接崭新未来,成就属于你的辉煌篇章。让我们一起开启这段充满未知与希望的旅程,勇敢追梦,迎接属于你的精彩未来!

2024-09-25

C语言基础与高级应用:从入门到进阶全流程教程

本资源专为初学者及有一定基础的开发者量身打造,提供全面的C语言学习路径。通过系统化的由浅入深讲解,涵盖基础到高级的各个知识点,帮助学习者迅速掌握C语言的精髓。教程从基本语法入手,逐步探讨控制结构、数组、指针、字符串操作等核心内容,直至结构体、函数指针、动态内存分配、文件操作等高级概念,确保学习者在扎实基础上稳步提升编程能力。 此外,教程精心设计了大量实战案例,帮助学习者在理论学习的同时,结合实际项目进行编码训练,进一步巩固知识点,提升实操能力。通过由易到难的编程挑战,您将打下坚实的C语言基础,并逐步掌握复杂项目的开发技巧。 本教程适合初学者及希望强化C语言技能的技术人员。无论您是计算机专业学生、从事嵌入式开发或系统编程的工程师,亦或是编程爱好者,本教程都能为您提供清晰的学习路径和实践指导。通过丰富的应用场景与典型案例,您将学会如何将C语言应用于实际工作中,为未来的技术提升奠定坚实基础。 通过本教程,您将掌握C语言的基础与进阶知识,并通过实战项目提升编程能力,迈向成为优秀程序员的目标。希望这份资源成为您编程之路的得力助手,帮助您快速成长,拓展技术视野,迎接更广阔的职业前景。

2024-09-25

空空如也

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

TA关注的人

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