数据结构
文章平均质量分 91
jaeden_xu
这个作者很懒,什么都没留下…
展开
-
LQ训练营(C++)学习笔记_常见动态规划模型
最大字段和给定一个由数字组成的序列,其中连续的一段子序列称为一个子段,子段中的所有数之和称为子段和,这里只考虑非空子段,即至少包含一个元素的子段,一个序列中子段和最大的子段的子段和,为最大子段和。动态规划算法对于全部是非正数的序列,最大子段和为其中元素的最大值。对于有正数的序列,考虑以每一个点为结尾的最大子段和,这个子段一定满足其前缀和均非负,因为如果有一个前缀是负的,那么减掉这个前缀对于...原创 2020-03-31 20:01:06 · 342 阅读 · 0 评论 -
LQ训练营(C++)学习笔记_动态规划入门
动态规划是编程解题的一种重要手段,1951年美国数学家R.Bellman等人,根据一类多阶段问题的特点,把多阶段决策问题变成一系列相互联系的单阶段问题,然后逐个解决。与此同时,他提出这类问题的最优化原理,从而创建了解决最优化问题的一种新方法:动态规划。动态规划算法通常用于求解某种最优性质的问题。我们可以用一个表来记录所有已解的子问题的答案。不管该子问题以后是否被用到,只要被计算过,就讲其结果填...原创 2020-03-31 20:00:28 · 251 阅读 · 0 评论 -
LQ训练营(C++)学习笔记_广度优先搜索
广度优先搜索队列是一种线性的数据结构,和栈一样是一种运算受限制的线性表。只允许从表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。C++中queue的实现在一个<queue>头文件中,在代码开头引入这个头文件,并在引入所有头文件后加上一句using namespace std#include<queue>using namespace std...原创 2020-03-31 19:59:41 · 165 阅读 · 0 评论 -
LQ训练营(C++)学习笔记_深度优先搜索
深度优先搜索算法迷宫问题的解法要用到DFS,对上下左右四个方向进行尝试,如果沿某个方向不能走到终点,就原路返回,继续尝试其它方向,知道走出迷宫。首先找到起点S,走到每个点时,按照左、下、右、上的顺序尝试。每次走到下一个点以后,就把这个点当作起点S,继续按照顺序尝试。如果每个点上下左右四个方向都尝试了,便回到走到这个点之前的点,这一步称为回溯。继续尝试其它方向,直到所有点都尝试过上下左右四个方向...原创 2020-03-31 19:59:10 · 389 阅读 · 0 评论 -
LQ训练营(C++)学习笔记_枚举算法
枚举算法学习笔记1、枚举的概念1、枚举的概念枚举就是根据提出的问题,列出该问题所有可能的解,并在逐一列出的过程中,检验每个可能的解是否是问题真正的解,如果是就采纳这个解,如果不是就判断下一个。枚举的题目特点:解枚举的范围是有穷的,检验条件是确定的。...原创 2020-03-21 21:34:58 · 199 阅读 · 0 评论 -
LQ训练营(C++)学习笔记_栈与递归
栈与递归学习笔记1、栈的概念2、代码实现栈的数据结构3、栈stack< T >的方法总结4、火车出入站问题5、递归的概念1、栈的概念栈是满足一定约束的线性数据结构,约束是:只允许在栈的一端插入或删除元素,这一端被称为栈顶,另一端称为栈底。向栈中压入元素,称为push;从栈顶弹出元素,称为pop。栈的重要性质是先进先出:越早进入栈的元素,出来的时间越晚。通常用top指示栈顶的位...原创 2020-03-21 21:11:06 · 182 阅读 · 0 评论