- 博客(19)
- 收藏
- 关注
原创 DFS入门
如果先访问左子树,那么会一直沿着左子树的路径向下访问,直到遇到叶子节点(没有子节点的节点)。例如,对于二叉树节点值依次为 1(根节点)、2(左子节点)、3(右子节点),深度优先搜索先访问 1,然后 2,此时 2 是叶子节点,就回溯到 1,再访问 3。它从起始顶点开始,沿着一条路径尽可能深地探索下去,直到无法继续,然后回溯到前一步,继续探索其他分支。比如在迷宫中,把每个岔路口看作一个节点,通道看作边,使用深度优先搜索可以找到从起点到终点的一条路径。从为0的格子走一步,必然走向为1的格子。
2024-12-20 11:23:13
329
原创 BFS入门
BFS 通常是指广度优先搜索(Breadth - First Search),它是一种图形数据结构的遍历算法。从给定的起始顶点开始,首先访问起始顶点的所有邻接顶点,然后再依次访问这些邻接顶点的邻接顶点,以此类推,一层一层地向外扩展搜索,就好像是水波纹一样,从中心向四周扩散。在这个过程中,先被访问到的顶点的邻接顶点会先被探索。
2024-12-10 23:02:43
1057
原创 动态规划、背包问题入门
动态规划是一种用于解决优化问题的算法策略,它的核心是把一个复杂的问题分解为一系列相互关联的子问题,并通过求解子问题的最优解来构建原问题的最优解。它将一个问题分解为若干个子问题,然后从最简单的子问题开始求解,逐步推导出更复杂的子问题的解,最终得到原问题的最优解。动态规划的关键是找到子问题之间的递推关系,以及确定合适的边界条件和初始值。动态规划通常需要保存已解决的子问题的答案,以避免重复计算,节省时间。
2024-12-03 16:57:50
1261
原创 数据结构——哈夫曼编码
哈夫曼编码(Huffman Coding)是一种用于无损数据压缩的熵编码算法。它是由大卫・哈夫曼(David A. Huffman)在 1952 年发明的。其基本思想是根据字符在数据中出现的频率来分配不同长度的编码,频率高的字符分配较短的编码,频率低的字符分配较长的编码,从而达到数据压缩的目的。
2024-11-25 20:57:32
2228
2
原创 数据结构——停车场管理问题
汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若停车场已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在其之后开入的车辆必须先退出停车场让路,待该辆车开出大门外,其他车辆再按原次序进入停车场,每辆停放在停车场的车在其离开停车场时必须按其停留的时间长短交纳费用。以栈模拟停车场,以队列模拟停车场外的便道,按照从终端读入的输入数据的方式进行模拟管理。输入1,表示车辆到达;
2024-11-25 20:30:20
699
原创 并查集--合并、查找、Kruskal算法
英文:Disjoint Set,即不相交集合;将编号为1到N的N个元素划分为若干个不相交集合,在每个集合中,选择集合中的某个元素代表其所在集合。合并两个集合查找某元素属于哪个集合。
2024-11-12 20:49:18
848
原创 递推算法求解(为动态规划做铺垫)
递推算法是一种通过已知条件逐步推导出结果的算法。它利用一定的递推关系,从初始条件开始,一步步推出后续的结果,直到得到最终答案。其基本思想是通过已知条件和递推关系式,逐步推导出所求问题的解。当我们求解问题规模为n的问题时,不能只局限于从前几项的数据当中寻找规律,当题目的递归深度稍微深一些时,这种方法很可能就无法奏效了,因此我们需要学习递推求解的思想,掌握其基本思想和步骤,往往很多问题就能迎刃而解。首先,确认:能否轻易地得到初始状态的解?然后,假设:规模不大于N-1的状态已经得到解决。
2024-11-07 21:40:46
1236
原创 贪心算法基础学习
贪心算法是一种逐步构建解决方案的算法设计范式,其核心思想是“贪心”,即在每一步选择中,都采取当前状态下最优的策略,以期望通过这些局部最优选择来达到全局最优。它不从整体最优上加以考虑,而是通过一系列局部最优的选择来逼近全局最优解。需要注意的是,贪心算法并不能保证对所有问题都能得到整体最优解,但对于某些特定类型的问题,它确实能够产生最优解。从这一点来说,贪心算法不能算是一种算法,而是一种策略,只适用于解决某些特定类型问题的一种方法。
2024-11-03 03:04:20
1325
原创 数据结构-数组(稀疏矩阵转置)和广义表
数组是一种用于存储多个相同类型数据的集合,其元素在内存中连续存放并按照一定的顺序排列。这种有序性和连续性使得数组在访问时具有较高的效率。数组的特点包括所有元素具有相同的数据类型、可以通过索引快速访问任意元素、支持各种操作如遍历和排序等,并且数组的定义和初始化方式在不同编程语言中有所不同。int i,j;//该非零元的行下标和列下标ElemType e;}Triple;//非零元三元组表,data[0]未用//矩阵的行数、列数和非零元总数TSMatrix;int i,j;//该非零元的行和列下标。
2024-11-02 19:32:50
1911
原创 牛客网基础173题80-130题做题笔记,易错记录
本文共收录12道题目,其中有易错的地方,有巧妙解题思路供我自己学习和巩固,同时也希望对大家能有所帮助。
2024-10-29 20:42:26
1131
原创 数据结构-串的模式匹配算法(简单匹配、KMP)
模式匹配是数据结构中字符串的一种基本运算,给定一个子串,要求在某个字符串中找出与该子串相同的所有子串。假设P是给定的子串,T是待查找的字符串,要求从T中找出与P相同的所有子串,这个问题称为模式匹配问题。P称为模式,T称为目标。如果T中存在一个或多个模式为P的子串,就给出该子串在T中的位置,称为匹配成功;否则匹配失败。
2024-10-28 16:25:27
500
原创 数据结构-循环(顺序)队列与链队列详解
顺序队列是一种运算受限的顺序表,其特殊性在于只允许在一端进行插入操作,而在另一端进行删除操作。这种结构使得顺序队列成为先进先出(FIFO)的线性表循环队列是一种将顺序队列的首尾相连,形成逻辑上的环状结构的队列。这种结构使得队列在到达尾部后可以继续从头开始使用存储空间,从而更有效地利用内存typedef struct /*顺序队列类型定义*/}SeqQueue;typedef struct LQNode/* 链队结点结构 */}LQNode;
2024-10-27 17:24:36
813
原创 数据结构-顺序栈和链栈详解
顺序栈是一种特殊的线性表,只允许在固定的一端进行插入和删除操作。这种数据结构因其后进先出(LIFO, Last In First Out)的特性而被广泛应用。1.基本概念:顺序栈是一种遵循特定存取原则的线性表,其所有操作仅限于表的一端进行。2.结构特点:允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom)。栈底固定,而栈顶位置由一个整型变量(栈顶指针)指示,该指针随操作动态变化。typedef struct/*顺序栈定义*//* 存放栈的数据元素 */int top;
2024-10-25 21:41:44
1411
原创 牛客网基础173题前80题做题笔记,易错记录
此文章意在记录做题过程中本人认为易错且容易忘记的点,以后可以多次回顾复习。文章共收录了17道题目与代码,并在每道题目后面附上了笔记,内容较简单基础,意在巩固基础,希望总有某些题目能对大家有所帮助。
2024-10-22 16:08:21
1129
原创 求最大公约数、最小公倍数--辗转相除法、更相减损法
求最大公约数的方法多种多样,这里只介绍了常用的两种方法。本人之前就学过辗转相除法和更相减损法,但时间一久就忘干净了,因此在这里做了记录,同时也分享给大家,希望能对大家有所帮助。
2024-10-19 23:38:32
2786
原创 HDOJ_2035 人见人爱A^B 二分法加速(快速幂)
A^B数据运算结果较大,容易导致数据溢出,所以数据结果的类型需要定义为long long,且一般与模运算(取余)相结合,即每次运算后都需取余,保证数据结果不会导致数据溢出。
2024-10-19 00:34:56
339
原创 单链表基础详解
在选择使用哪种数据结构时,应根据具体需求来决定,以确保程序的性能和资源利用最优化。这里附上个人(初学者)的一些笔记:创建Node类型的指针对象时,需使用"->“获取结点数据;将参数写在函数内部时技巧:减少一个传入参数前的*,即传入**p_head时,函数内应用为。ps:linkedlist_creat()第一个参数p_head前有两个*,第一个。指p_head为指针类型,此时要记得传入参数时第一个参数前应加一个&。p_new时,函数内应用为p_new。注意代码中temp指向下一个节点代码为。
2024-10-17 00:26:40
749
原创 我的第一篇博客
我原本不是计算机专业的学生,但想往这方面转。大一上在同学的推荐下下载了csdn,那是只知道这是一个学习的平台,却不知如何应用。在一个学期的努力下如愿转到计算机专业,但由于基础薄弱,跟不上课程,缺乏自信心,大一下学期几乎荒废,也没有再使用过csdn。如今大二上学期了,为自己的将来感到苦恼、焦虑,在网上自学的过程中,看到有一位老师提到要写自己的博客,不仅可以为自己的简历增添光彩,也能提升自己的表达能力,还能做笔记,帮助学习,甚至提升个人影响力,因此决心以这篇博客开启自己的学习之旅,记录自己的学习过程。
2024-10-15 19:03:18
411
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人