![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
文章平均质量分 83
无限酸奶
爱自己是终身浪漫的开始
展开
-
对KMP算法的理解与思考
我们可以了解到,KMP算法是一种字符串匹配算法,用于在文本中查找指定的字符串。原创 2023-10-06 11:33:33 · 333 阅读 · 0 评论 -
如何理解链表带头节点和不带头节点
首先我们要知道什么是链表的头节点和头指针,两者有什么区别,弄清这一点我们才能更好的理解带头指针和不带头节点有什么优势和劣势。头指针什么是头指针?头指针是指向链表中第一个有效节点的指针。它通常是链表的起始点,用于访问链表的第一个元素。头结点什么是头节点?头结点是链表中的第一个节点,但它不存储实际数据,仅用于辅助管理链表。首元节点什么是首元节点?首元结点是链表中存储实际数据的第一个节点。通常,头结点之后的节点是首元结点,但在某些链表中,首元结点也可能是头结点本身。原创 2023-09-23 18:24:10 · 1566 阅读 · 0 评论 -
P1160 队列安排
但是还存在一个问题,就是,我们不知道遍历的起始位置和终止位置。这样的话,我们还需要一个数来表示起点(终点),这里我用0来表示,其实就是将0插入到1的左边,这样的话只需要遍历0右边的数即可。由于题目中设计较多的插入和删除操作,我们首先想到的就是链表。由于涉及左右两个方向的插入操作,我们可以用双向链表。在所有同学按照上述方法队列排列完毕后,老师想知道从左到右所有同学的编号。个空格隔开的整数,表示了队列从左到右所有同学的编号。中某位同学(即之前已经入列的同学)的左边或右边;,表示去掉的同学数目。原创 2023-08-17 17:42:02 · 194 阅读 · 0 评论 -
【深基15.例2】寄包柜
超市里有n1≤n≤105个寄包柜。每个寄包柜格子数量不一,第i个寄包柜有ai1≤ai≤105个格子,不过我们并不知道各个ai的值。对于每个寄包柜,格子编号从 1 开始,一直到ai。现在有q1≤q≤1051 i j kijk0≤k≤109k02 i jij已知超市里共计不会超过107个寄包格子,ai是确定然而未知的,但是保证一定不小于该柜子存物品请求的格子编号的最大值。原创 2023-08-17 09:43:41 · 123 阅读 · 0 评论 -
链接表操作:遍历、插入和删除
什么是链表?链表是一种线性数据结构,包括一系列相连的结点。在这里,每个节点都存储数据和下一个节点的地址。例如:链表有多种类型:单链表、双链表和循环链表。这里仅介绍单链表。原创 2023-08-07 21:30:36 · 1371 阅读 · 0 评论 -
c++ 全排列的实现
next_permutation到底是做什么的呢?next_permutation是用于求下一个排列,默认是升序排列使用next_permutation需要头文件#include函数原型:那么next_permutation是怎么求下一个排列的呢?其实,next_permutation在求下一个排列的时候,,我们可以根据 next_permutation 的返回值求出全排列例如 "4 3 2 1"就没有下一个排列,它是排名最靠后的.原创 2023-08-01 17:09:14 · 2532 阅读 · 0 评论 -
C++求最大公约数和最小公倍数的方法
这里总结了两种求最大公约数和最小公倍数的方法。使用欧几里得算法,使用头文件中的函数原创 2023-05-25 22:16:04 · 6129 阅读 · 0 评论 -
二分查找和二分答案
什么是二分查找?它与二分答案有区别吗?其实两者还是有区别的。折半查找因为区间(l,r)可以被分成(l,mid ]和(mid+1,r)或者被分成(l,mid-1)和 [ mid,r)所以二分答案的模板有两种形式。所以二分答案的两种模板到底有什么区别呢?区别就在于mid是被划分在左边的区间还是右边的区间。如果划分到左边,也就是第一种模板,反之就是第二种模板。那么我们如何记住这两种模板呢?原创 2023-04-23 23:48:23 · 245 阅读 · 0 评论 -
KMP字符串匹配算法学习总结
KMP算法是一种改进的算法,它是由BF改进而来的。那么下面我们先介绍BF算法。原创 2023-04-11 07:18:14 · 217 阅读 · 0 评论 -
背包问题总结
我们要求的是怎样使不超过背包体积的情况下,且总价值最大的值。可以将f[i][j]的状态表示为,选0件第i件物品总体积不超过j的所有集合,选1件第i件物品不超过体积j的所有集合····直到体积不超过j为止。f[j]其实表示的就是第i层的不超过体积j的最大价值,而我们实际上要的是从第i-1层的f[j]递推到下一层。我们让(1)式中j=j-v[i],我们可以得到(2)式,我们可以(1)式发现红色部分只是比(2)式红色部分每一项多了一个w[i],我们让(2)式左右两边加上w[i],这样我们就可以得到状态转移方程。原创 2023-04-02 23:06:29 · 559 阅读 · 0 评论 -
筛质数问题总结
在数据量为10^6时,用埃氏筛法和欧拉筛法所用时间几乎相等。当数据量大于10^7时欧拉筛法更快一些。原创 2023-03-29 18:58:24 · 229 阅读 · 3 评论