- 博客(15)
- 收藏
- 关注
原创 手把手教数据结构与算法:简单二叉树(递归和迭代实现三种遍历)
该文章深入探讨了二叉树的基础概念、形态、特殊情况、基本操作、性质和存储方式。从树的基本术语开始,解释了二叉树的定义,包括节点、根、子树等概念。接着介绍二叉树的基本形态。并且描述了二叉树的基本操作,如创建、插入、删除、查找和遍历。然后,总结了二叉树的基本性质,包括各层节点数量、满二叉树深度和叶节点与中间节点的关系。介绍了二叉树的存储方式,包括顺序存储和链接存储。最后用递归和迭代的方法完成了前序、中序和后序遍历二叉树
2024-05-19 15:57:56
1965
205
原创 手把手教数据结构与算法:有序线性表设计(表合并)
本文设计了一个有序线性表类,要求完成初始化,插入和遍历功能,使得表内元素实现有序排列。同时实现合并功能,使得两个线性表能够合并为一个线性表。
2024-05-08 09:36:48
3058
172
原创 手把手教数据结构与算法:优先级队列(银行排队问题)
本文是一篇关于模拟银行排队系统的编程实现的指南。它从队列的基本概念开始介绍,包括队列的定义、特点、常见基本操作以及优先级队列的概念。然后给出银行排队问题的描述和解题思路,队列和优先级队列的数据结构实现以及模拟银行排队系统的类实现。
2024-05-01 11:40:32
11197
148
原创 手把手教数据结构与算法:栈的应用(平衡符号和简单计算器)
这篇文章详细介绍了栈的基本概念、定义以及常见操作,然后通过两个具体的问题展示了栈的应用:平衡符号和简单计算器的实现。在平衡符号问题中,通过栈的特性判断输入的字符串中的括号是否匹配,实现了括号匹配的功能。在简单计算器问题中,利用栈来处理中缀表达式,将中缀表达式转换为后缀表达式并计算其值,最终得到中缀表达式的计算结果。文章不仅介绍了问题的描述和解题思路,还给出了详细的代码实现和相应的示例输入输出,使读者能够更深入地理解栈的应用和相关算法。
2024-04-27 19:07:54
4427
40
原创 力扣70:爬楼梯(动态规划和矩阵快速幂解法)
本文章提出了爬楼梯的两种解法,其中一种是用经典的动态规划思想,另一种则是使用矩阵性质进行解题
2024-04-26 10:28:32
3179
20
原创 2023第十四届蓝桥杯省赛C++A组:颜色平衡树(词典记录颜色+递归解法
对于叶子节点,因其只有一个颜色,故一定为颜色平衡树,以此作为递归终止条件。用tree容器记录各个节点的孩子,用color记录各个节点对应的颜色,在进行递归时,遍历孩子,并将各子树的颜色数进行求和,然后利用其中一个颜色的数量来判断该节点对应的子树是否为颜色平衡树。对每一个子树判断是否为颜色平衡树,先考虑递归解法,故dfs用来判断该结点作为父节点的树是否为颜色平衡树,并用哈希表来记录各种颜色的数量。对于100% 的评测用例,1≤n≤200000,1≤Ci≤200000,0≤Fi<i。保证输入数据是一棵树。
2024-04-22 11:03:23
4000
4
原创 2021第十二届蓝桥杯省赛C++A组:路径(动态规划)
考虑动态规划解法,dp[i]表示为节点1到节点i的最短距离,初始状态dp[1]=0,动态转移方程为dp[j] = min(dp[i] + get_length(i, j), dp[j]),即结点j是否被选入路径中由dp[i]+结点i和j之间的距离决定,最终输出dp[2021]即为正确结果。对于该题,两节点之差绝对值大于21则不连通,故转移时只需考虑与该节点之差绝对值小于21的节点。答案:10266837。
2024-04-20 19:30:00
4444
7
原创 2021第十二届蓝桥杯省赛C++A组:左孩子右兄弟(递归解法)
该问题用“左孩子右兄弟”表示树,即每个结点可以选择一个作为左孩子,然后剩下的进行连接作为孩子的子树,为了寻找“左孩子右兄弟”表示法中树的最大高度,我们会很容易发现,我们要将最大高度的子树放在最下面,因此考虑用递归解决该问题。对于每个结点,该结点作为根节点的“左孩子右兄弟”表示法树的最大高度为,子树的最大高度加上孩子结点的个数。
2024-04-19 20:00:00
4548
2
原创 2022第十三届蓝桥杯省赛C++A组:最长不下降子序列(二维动态规划解法)
对于该题考虑二维动态规划,dp[i]用来表示以nums[i]为结尾的序列,其最长不下降的序列长度,dp[i][0]代表没有修改过的序列,dp[i][1]代表已修改过的序列,初始状态dp[0][0]=dp[0][1]=1。dp[j][0] = max(dp[i][0] + 1, dp[j][0]),未修改的最长子序列长度+1。dp[j][1] = max(dp[i][1] + 1, dp[j][1]),已修改的最长子序列长度+1。对于nums[j]>nums[i],需要执行三步,对该数组用两次循环进行遍历。
2024-04-17 20:37:12
5008
6
原创 2024蓝桥杯C++A组:零食采购(深度优先搜索+回溯)
该题是一道图论问题,目的是寻找最短路径下能采购到的零食总数,故先利用矩阵生成无向连通图,再采用深度优先遍历,存储两点之间的所有路径,再判断哪条最短路径,在最短路径下模拟零食采购,用集合存储零食种类,集合大小即为所求零食种类数。
2024-04-14 00:27:32
6072
13
原创 2024蓝桥杯C++A组:成绩统计(动态规划解法)
对于该题,先取前k个人的成绩计算其方差,并将成绩记录在数组中,记录当前均值,设小蓝已检查前i-1个人的成绩,若方差依然大于T,找出离均值最远的一个成绩,若第i个人的成绩距离当前均值更近,则剔除离均值较远的成绩,使得方差变小,若遍历完整个数组均找不到更小的方差,返回-1。
2024-04-14 00:00:20
6264
4
原创 2024蓝桥杯C++A组:团建(层序遍历)
先将树的孩子用vector容器进行存储,因题目说明每棵树不会有节点的值重复,故进行层序遍历,判断树的每层是否有相同结点值,以此判断最长公共前缀。
2024-04-13 23:49:20
5737
2
原创 2024蓝桥杯C++A组:训练士兵
题目描述很清晰不再赘述,对于每次训练,需要考虑采用士兵单独训练还是组团训练的方式,故每次训练将所需训练次数大于0的士兵花费进行求和,与组团训练进行比较,以此判断是否要采用组团训练的方式。
2024-04-13 23:33:17
6928
6
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人