摘要: 动态规划DP 本文介绍了动态规划(DP)的基本概念及典型应用。核心思想是通过分解问题为相互重叠的子问题,利用记忆化存储避免重复计算。文章通过多个例题详细讲解: 一维DP:硬币找零问题,用最少硬币凑金额; 二维DP:网格路径计数问题,计算机器人从左上到右下的路径数; 线性DP:最长递增子序列问题,分别给出O(n²)和O(nlogn)解法; 划分型DP:字符串回文划分问题,求最少回文划分数; 背包问题:包括01背包和完全背包,说明状态定义和转移方程差异。 每种问题都提供代码实现,并强调状态定义、转移方程和边界处理等关键步骤,还系统介绍了动态规划算法在多重背包、博弈论、双序列和区间问题中的应用。针对多重背包问题,重点讲解了二进制优化方法将问题转化为01背包;博弈类问题通过状态转移分析必胜策略;双序列问题采用二维DP求解最长公共子序列;区间DP则用于计算最长回文子序列。各类问题均给出状态定义、转移方程和参考代码,并强调存储子问题解、避免重复计算的核心思想。文章涵盖了动态规划的多种典型应用场景,展示了该算法通过分解子问题、建立状态转移方程来高效解决复杂问题的通用框架。 阅读全文
posted @ 2025-09-06 16:12 一只小小的芙厨 阅读(57) 评论(0) 推荐(0)
摘要: ​ 声明:资料参考十大经典排序算法 一.概述 分类名称时间复杂度空间复杂度稳定性 平均情况最好情况最坏情况辅助存储 比较类插入排序 直接插入排序 O(n^2) O(n) O(n^2) O(1) 稳定 希尔排序 O(n^3/2) O(n) O(n^2) O(1) 不稳定 选择排序 直接选择排序 O(n 阅读全文
posted @ 2025-09-06 15:41 一只小小的芙厨 阅读(14) 评论(0) 推荐(0)
摘要: C++二分详解 二分查找是一种高效的搜索算法,适用于有序数组。其核心思想是通过每次将搜索范围缩小一半来快速定位目标元素,时间复杂度为O(logn)。文章详细介绍了二分查找的基本原理、C++实现(包括迭代和递归版本)、标准库函数(binary_search、lower_bound等)以及常见变体应用(如查找边界值)。同时通过多个编程例题(搜索插入位置、寻找峰值等)展示了二分查找的实际应用场景和解题思路。文章还探讨了二分查找的局限性、浮点数二分和二分答案等进阶用法,帮助读者全面掌握这一重要算法。 阅读全文
posted @ 2025-09-06 15:38 一只小小的芙厨 阅读(116) 评论(0) 推荐(0)
摘要: C++位运算 C++位运算总结:本文全面介绍了C++中的位运算操作,包括基础运算符(与、或、异或、取反、移位)及其应用场景。重点讲解了位操作技巧,如位访问与修改、掩码操作、变量交换、高效计算等,并提供了判断奇偶性、计算绝对值、汉明权重等实用算法。文章还指出了使用注意事项,如优先级、有符号数处理和可移植性问题,并通过示例代码演示了常见用法。位运算作为底层编程的重要工具,在性能优化和特定场景中具有显著优势。 阅读全文
posted @ 2025-09-06 15:35 一只小小的芙厨 阅读(56) 评论(0) 推荐(0)
摘要: 树与二叉树+堆 本文介绍了树与二叉树的基本概念、存储结构及遍历方法。主要内容包括:1)通过图示展示满二叉树、普通二叉树、完全二叉树等不同树形结构;2)讲解用结构体存储树和二叉树的实现方式;3)详细说明先序(根左右)、中序(左根右)、后序(左右根)三种遍历方法;4)提供二叉树遍历的例题及参考代码;5)介绍堆的概念及其在优先队列中的应用,包含STL实现方法。文章通过具体代码示例帮助理解树结构的实际应用,适合初学者学习树的基本操作。 阅读全文
posted @ 2025-09-06 15:32 一只小小的芙厨 阅读(8) 评论(0) 推荐(0)
摘要: STL小结 本文介绍了 STL(标准模板库)的基本概念、各类容器及相关算法。主要内容包括:1) 说明 STL 是存放数据的容器集合,比静态数组更灵活;2) 详细介绍 vector、stack、queue、string、pair、set、map 等容器的定义、特性、常用函数及注意事项;3) 列举排序、查找等常用算法及使用示例,提及 sort 函数可自定义排序规则;4) 总结 STL 遵循泛型编程思想,是 C++ 标准库核心组件,也是解题利器。文章通过具体定义和函数说明,帮助理解 STL 的实际应用,适合初学者学习。 阅读全文
posted @ 2025-09-06 15:19 一只小小的芙厨 阅读(11) 评论(0) 推荐(0)