自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 收藏
  • 关注

原创 数据结构:排序

数据结构:排序排序:给定一组记录的集合{r1, r2, ……, rn},其相应的关键码分别为{k1, k2, ……, kn},排序是将这些记录排列成顺序为{rs1, rs2, ……, rsn}的一个序列,使得相应的关键码满足ks1≤ks2≤……≤ksn(称为升序)或ks1≥ks2≥……≥ksn(称为降序)在排序问题中,通常将数据元素称为记录排序的基本概念...

2019-12-27 19:42:23 180

原创 数据结构:查找

查找列表:由同一类型的数据元素组成的集合。关键码:数据元素中的某个数据项,可以标识列表中的一个或一组数据元素。键值:关键码的值。主关键码:可以唯一地标识一个记录的关键码。次关键码:不能唯一地标识一个记录的关键码。查找的基本概念查找 :在具有相同类型的记录构成的集合中找出满足给定条件的记录。查找的结果 :若在查找集合中找到了与给定值相匹配的记录,则称查找成功;否则,称...

2019-12-03 08:14:23 182

原创 数据结构:图

图图的定义图是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G=(V,E)其中:G表示一个图,V是图G中顶点的集合,E是图G中顶点之间边的集合。图的基本术语简单图:在图中,若不存在顶点到其自身的边,且同一条边不重复出现。邻接、依附无向图中,对于任意两个顶点vi和顶点vj,若存在边(vi,vj...

2019-12-02 22:34:33 1163

原创 数据结构:二叉树

二叉树的定义二叉树是n(n≥0)个结点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根结点和两棵互不相交的、分别称为根结点的左子树和右子树的二叉树组成。特点:⑴ 每个结点最多有两棵子树;⑵ 二叉树是有序的,其次序不能任意颠倒。注意:二叉树和树是两种树结构。二叉树的基本形态:1.空二叉树2.只有一个根结点3.根结点只有右子树4...

2019-11-09 18:10:41 307

原创 数据结构:树

树的定义:树:n(n≥0)个结点的有限集合。当n=0时,称为空树;任意一棵非空树满足以下条件:⑴ 有且仅有一个特定的称为根的结点;⑵ 当n>1时,除根结点之外的其余结点被分成m(m>0)个互不相交的有限集合T1,T2,… ,Tm,其中每个集合又是一棵树,并称为这个根结点的子树。树的定义是采用递归方法树的基本术语结点的度:结点所拥有的子树的个数。树的度...

2019-11-09 16:30:24 100

原创 数据结构:字符串和多维数组

字符串 子串:串中任意个连续的字符组成的子序列。 主串:包含子串的串。 子串的位置:子串的第一个字符在主串中的序号。 串的存储结构 顺序串:用数组来存储串中的字符序列。链接串:用链接存储结构来存储串。 模式匹配:给定主串S="s1s2…sn"...

2019-10-27 20:43:01 168

原创 数据结构:队列

栈和队列队列:只允许在一端进行插入操作,而另一端进行删除操作的线性表。空队列:不含任何数据元素的队列。 允许插入(也称入队、进队)的一端称为队尾,允许删除(也称出队)的一端称为队头。 队列的操作特性:先进先出(FIFO,LILO)队列的抽象数据类型定义 ADT Queue Data队列中元素具有相同类型及先进先出特性,相邻元素具有前驱和后继关系...

2019-10-27 20:35:30 839

原创 数据结构:栈

栈和队列栈:限定仅在表尾进行插入和删除操作的线性表。 空栈:不含任何数据元素的栈。允许插入和删除的一端称为栈顶,另一端称为栈底。(a1, a2, ……, an)a1为栈底,an为栈顶。 栈的操作特性:后进先出顺序栈类的声明 :const int MAX_SIZE=100;template <class T>class ...

2019-10-27 20:22:37 91

原创 数据结构:链表2

双链表构造前因:单链表的主要不足之处是:link字段仅仅指向后继结点,不能有效地找到前驱双链表弥补了上述不足之处增加一个指向前驱的指针双链表的结点结构:前驱指针域llink+数据域data+后继指针域rlinktemplate <class T>struct DNode{T data;DNode<T> *llink;DNo...

2019-09-21 10:59:39 91

原创 数据结构:链表1(单链表)

数据结构:单链表单链表的定义:单链表是用一组任意的存储单元存放线性表的元素,这组存储单元可以连续也可以不连续,甚至可以零散分布在内存中的任意位置。每个存储单元在存储数据元素的同时,还必须存储其后记元素的地址信息,这个地址信息称为指针。这两部分组成了数据元素的存储映像,称为结点。结点node分为数据域data和指针域next。(指针变量的三要素:名字、内存地址、值)结点定义:(...

2019-09-21 10:33:50 278

原创 数据结构:顺序表

顺序表线性表的顺序存储结构:线性表特点:线性表的顺序存储是指用一组地址连续的存储单元依次存储线性表中的各个元素,作用:线性表中在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中,即通过数据元素物理存储的相邻关系来反映数据元素之间逻辑上的相邻关系。顺序存储的实现:一维数组存储顺序表中的数据。设顺序表的每个元素占用 c 个存储单元,则第 i 个元素的存储地址为:L...

2019-09-21 10:07:41 323

原创 数据结构:模板

数据结构:模板模板概述:(1)模板是对具有相同特性的函数或类的再抽象,模板是一种参数化的多态性工具。(2)所谓参数化多态性,是指将程序所处理的对象的类型参数化,使一段程序代码可以用于处理多种不同类型的对象。(3)采用模板编程,可以为各种逻辑功能相同而数据类型不同的程序提供一种代码共享的机制。模板分类:函数模板、类模板模板的实例化:模板通过参数实例化可以构...

2019-09-21 09:47:05 317

原创 数据结构:线性表

数据结构:线性表线性表( Linear List )的定义是零个或多个具有相同类型的数据元素的有限序列。数据元素的个数定义为线性表的 长度 。长度等于零时称为空表,一个非空表通常记为L = ( a 1 , a 2 ,……, a n )其中, a i ( 1 ≤ i ≤ n )称为数据元素,下标 i 表示该元素在线性表中的位置或序号, 称元素 a i 位于表的第 i 个位置,或称...

2019-09-21 09:33:53 239

原创 c++知识总结

c++知识总结第八章 运算符重载运算符和普通函数在使用的语法上虽然有所不同,但是可以将运算符看作是一种特殊的函数:操作数是函数的参数,运算结果是函数的返回值。运算符可以像函数一样重载。operator后跟重载的运算符,operator+就是重载“+”运算符。但是不能定义c++中没有的运算符。不能重载的运算符:作用域解析符(::)、成员选择符(.)、成员指针间接引用符(.*)、条件运算符...

2019-06-23 16:47:17 130

原创 c++软件开发心得

c++软件开发心得这个学期的c++学习马上结束了,和上一个学期相比是完全不同的体验,开始进行了软件设计开发,在老师的引领下,尝试了几个简单的软件设计,有学生成绩管理系统、ATM机系统、通讯录还有最后的图书管理系统,在研究学习这几个系统的过程中,有了很多收获,也初步认识到程序设计的一个雏形。首先接触一个设计,先明确思路,罗列需求和功能,然后把整体的框架构造出来,再去思考细节的处理。万事开头难...

2019-06-22 16:18:11 304

原创 acm-线段树2

一、建树建立一棵线段树,并记录原数组信息 void build(int id,int l,int r){tree[id].left=l; tree[id].right=r;if (l==r){tree[id].sum=a[l];tree[id].max=a[l];}else{int mid=(l+r)/2;build(id*2,l,mid);b...

2019-05-30 08:47:07 83

原创 acm-线段树1

线段树区间查询 询问某段区间的某些性质(极值,求和,etc)区间更新 某些操作影响了某段区间(统一加一个值……)三个问题 更新点,查询区间 更新区间,查询点 更新区间,查询区间线段树——在O(log2N)的时间内完成每次操作 O(Qlog2N) 线段树的本质是一棵二叉树,线段树的每一个节点记录的是一段区间的信息。 对于任一非叶子...

2019-05-30 08:42:56 71

原创 acm-并查集

并查集1、什么叫并查集  并查集(union-find set)是一种用于分离集合操作的抽象数据类型。它所处理的是“集合”之间的关系,即动态地维护和处理集合元素之间复杂的关系,当给出两个元素的一个无序对(a,b)时,需要快速“合并”a和b分别所在的集合,这其间需要反复“查找”某元素所在的集合。“并”、“查”和“集”三字由此而来。在这种数据类型中,n个不同的元素被分为若干组。每组是...

2019-05-25 21:50:54 125

原创 acm-最短路径算法

最短路径算法一、求出最短路径的长度以下没有特别说明的话,dis[u][v]表示从u到v最短路径长度,w[u][v]表示连接u,v的边的长度。1.Floyed-Warshall算法 O(N3)   简称Floyed(弗洛伊德)算法,是最简单的最短路径算法,可以计算图中任意两点间的最短路径。Floyed的时间复杂度是O (N3),适用于出现负边权的情况。算法描述:初始化:点u、v如...

2019-05-22 23:31:54 451

原创 acm-堆

堆堆的定义: 堆结构是一种数组对象,它可以被视为一棵完全二叉树。树中每个结点与数组中存放该结点中值的那个元素相对应。堆的性质: 设数组A的长度为len,二叉树的结点个数为size,size≤len,则A[i]存储二叉树中编号为i的结点值(1≤i≤size),而A[size]以后的元素并不属于相应的堆,树的根为A[1],并且利用完全二叉树的性质,我们很容易求第i个结点的父结点...

2019-05-18 22:48:37 243

原创 acm-图论算法

图论算法严格意义上讲,图是一种数据结构,定义为:graph=(V,E)。V是一个非空有限集合,代表顶点(结点),E代表边的集合。图分为有向图和无向图。基本概念:结点的度:无向图中与结点相连的边的数目,称为结点的度。结点的入度:在有向图中,以这个结点为终点的有向边的数目。结点的出度:在有向图中,以这个结点为起点的有向边的数目。权值:边的“费用”,可以形象地理解为边的长度。...

2019-05-15 22:37:40 279

原创 acm-二叉树

二叉树 二叉树(binary tree,简写成BT)是一种特殊的树型结构,它的度数为2的树。即二叉树的每个结点最多有两个子结点。每个结点的子结点分别称为左孩子、右孩子,它的两棵子树分别称为左子树、右子树。二叉树有5中基本形态:1.空二叉树2.仅有根结点的二叉树3.左子树为空的二叉树4.右子树为空的二叉树5.左右子树均非空的二叉树           前面引入的...

2019-05-11 22:53:09 895

原创 acm-树

树一棵树是由n(n>0)个元素组成的有限集合,其中:(1)每个元素称为结点(node);(2)有一个特定的结点,称为根结点或树根(root);(3)除根结点外,其余结点能分成m(m>=0)个互不相交的有限集合T0,T1,T2,……Tm-1。其中的每个子集又都是一棵树,这些集合称为这棵树的子树。输的基本概念:A.一个结点的子树个数,称为这个结点的度;度为0的结...

2019-05-08 22:38:03 242

原创 acm-二分

二分查找:二分查找是在一个单调序列中,通过不断缩小解可能存在的范围,从而求得最优解的方法。它具有多种变化与应用,并不只在一个序列中查找一个数。简单定义:在一个单调有序的集合中查找元素,每次将集合分为左右两部分,判断解在哪个部分中并调整集合上下界,重复直到找到目标元素。时间复杂度:O (logn),优于直接顺序查找O(n)二分查找的查找过程是:每...

2019-05-04 22:50:18 309

原创 acm-单调队列

单调队列:队列中元素之间的关系具有单调性,而且,队首和队尾都可以进行出队操作,只有队尾可以进行入队操作。操作:(1)插入:若新元素从队尾插入后会破坏单调性,则删除队尾元素,直到插入后不再破坏单调性为止,再将其插入单调队列。(2)获取最优(最大、最小)值:访问首尾元素。原理:在处理时,去掉不和谐的状态,使得每个状态在队列中只出现一次;同时维护一个能瞬间得出最优解的队列,...

2019-05-01 22:31:41 231

原创 acm-状态压缩

状态压缩状态压缩是一个很常见的方法,最最常见的是二进制压位。用一个二进制位表示状态。采用状态压缩的主要原因是原状态不容易表示或者状态数目过多,内存不够用。当然自然解决了上面的两个问题-----状态容易表达,至于内存,用一个数的二进制表示状态可以节省很多内存空间(当然也有使用的局限性)状压一般是用于状压BFS和状压DP,状压的主要难点就是怎么压缩状态,然后就是...

2019-04-27 22:50:51 292

原创 acm-位操作

位操作:& 与 两个位都为1时,结果才为1| 或 两个位都为0时,结果才为0^ 异或 两个位相同为0,相异为1~ 取反 0变1,1变0<< 左移 各二进位全部左移若干位,高位丢弃,低位补0>> 右移 各二进位全部右移若干位,对无符号数,高位补0,有符号数,各编译器处理方...

2019-04-24 22:48:06 104

原创 acm-搜索2

深度优先搜索深度优先搜索法有递归以及非递归两种设计方法。一般的,当搜索深度较小、问题递归方式比较明显时,用递归方法设计好,它可以使得程序结构更简捷易懂。当搜索深度较大时,当数据量较大时,由于系统堆栈容量的限制,递归容易产生溢出,用非递归方法设计比较好。广度优先搜索无论问题性质如何不同,利用广度优先搜索法解题的基本算法是相同的,但数据库中每一结点内容,产生式规则,根据不同的问题,有...

2019-04-20 22:46:45 64

原创 acm-搜索

搜索一、广度优先搜索(BFS)基本思想:从初始状态S 开始,利用规则,生成所有可能的状态。构成的下一层节点,检查是否出现目标状态G,若未出现,就对该层所有状态节点,分别顺序利用规则。生成再下一层的所有状态节点,对这一层的所有状态节点检查是否出现G,若未出现,继续按上面思想生成再下一层的所有状态节点,这样一层一层往下展开。直到出现目标状态为止。在路径的寻找问题...

2019-04-17 21:40:47 101

原创 程序设计 第六章 类和对象知识总结

程序设计 第六章 类和对象知识总结面向对象系统由一组交互的对象构成,每个对象都有属于自己的属性和行为,这些对象通过相互之间的消息传递来写作实现系统的功能。对象所属的类型称为类,类是对一组具有相同属性和行为的对象的抽象。本章讨论C++中的类和对象。类的基本思想是数据抽象和封装,数据抽象是一种依赖接口和实现分离编程的技术。类的接口包括用户包括用户能执行的操作,类的实现则包括类的数据成员,负...

2019-04-14 13:48:15 144

原创 acm-递归函数

递归函数递归函数:在一个函数中再次再次调用该函数自身的行为叫做递归。例子:阶乘、斐波那契数列...递归有直接递归和间接递归之分:(1)直接递归:直接调用函数本身;(2)间接递归:指函数体中没有直接调用自身函数,而是调用了另一个函数,在那个函数里,出现了调用本函数的语句。或者,在那个函数里,又调用了一个其他函数,反复出现调用其它函数,而最后有一个函数调用了本函数;...

2019-04-13 22:48:55 557

原创 acm-区间dp

区间dp区间DP主要是把一个大区间拆分成几个小区间,先求小区间的最优值,然后合并起来求大区间的最优值。//一般区间DP实现代码memset(dp, 0x3f, sizeof(dp));for (int i = 1; i <= n; i++) //区间长度为1的初始化 dp[i][i] = 0;for (int len = 2; len <= n; ...

2019-04-10 22:29:03 215

原创 acm-01背包与完全背包的顺序逆序

完全背包:完全背包(CompletePack): 有N种物品和一个容量为V的背包,每种物品都有无限件可用。第i种物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。 完全背包按其思路仍然可以用一个二维数组来写出:f[i][v]=max{f[i-1][v-k*c[i]]+k*w[i]|0<=k*c[i]&lt...

2019-04-07 22:08:11 927

原创 acm-背包1

一、01背包题目:有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使价值最大。基本思路:这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放f[i][v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值。则其状态转移方程便是:f[i][v]=max{f[i-1][v],f[i-1][v-c[i]...

2019-04-03 22:47:36 137

原创 acm-dp-2

动态规划的特点有最优子结构和大量的重复计算。计算的过程就是一个化繁为简的过程。在这其中需要考虑所有的情况,列举所有的解,想要化繁为简,所以运用了最优化原理,但是每个动态规划问题都有其特殊性,或者很难找到最优子结构,或者很难找到重复子问题。为了更模式化的,条例更清晰的解决dp,我搜索了一些方法。 动态规划算法三要素:①所有不同的子问题组成的表②解决问题的依赖...

2019-03-30 20:32:43 212

原创 acm-dp-1

动态规划是解决多阶段决策问题的一种方法。 多阶段决策问题:如果一类问题的求解过程可以分为若干个互相联系的阶段,在每一个阶段都需作出决策,并影响到下一个阶段的决策。 多阶段决策问题,就是要在可以选择的那些策略中间,选取一个最优策略,使在预定的标准下达到最好的效果. 最优性原理:1.不论初始状态和第一步决策是什么,余下的决策相对于前一次决策所产生的新状态,构成一个最优决策序列...

2019-03-27 23:17:48 154

原创 程序设计 第四章 复合类型知识总结

程序设计 第四章 复合类型知识总结新的学期,我们的学习重心,不再像上学期一样,学习如何敲代码的技术,现在开始逐渐深入,开始学习面向对象程序设计,新学期的程序设计变得更为的复杂,初步表现在数据的类型上,我们一上来就学习了第四章复合类型,下面是第四章的知识总结。一开始讲了一个constexpr对象,constexpr对象如果认定某个对象是常量表达式,可以把它声明为cons...

2019-03-24 23:04:40 201

原创 贪心算法问题

贪心算法的思想上抽象能力是解决的关键,好的抽象能极大的简化问题的复杂度,简化问题后再进行最优策略的制定,从而过渡到算法,贪心算法类题目的关键反而不在贪心算法本身,个人感觉应该在对问题符号化,程序化的抽象,和简单数学模型的构建上,只有构建完成正确的模型和抽象,才能够得到正确的策略,但是我们其实能了解到不是只要构建好正确的模型,完成问题的抽象,就一定能得到最优的结果。贪心问题虽然对于现在的我很麻烦...

2019-03-23 23:32:53 181

原创 acm-贪心总结

要做贪心,需要分布解决,得到每一步骤中的最优解,在这其中往往要对问题进行一定的预处理,通常是排序(如性价比之类),或者是数据的简化(如moving tables把走廊相对的两间屋看成一个整体,作为一个数据),预处理之后进入到整个问题的核心部分贪心策略,贪心策略有的时候是实现问题的转化,有时候不用转化而是反复遍历。现在做题还不是很多,往往没有一种很明显的贪心思想出来,思路还是像解数学题一样...

2019-03-20 23:49:42 169

原创 解题报告 Moo Volume

Farmer John has received a noise complaint from his neighbor, Farmer Bob, stating that his cows are making too much noise.FJ's N cows (1 &lt;= N &lt;= 10,000) all graze at various locations on a long...

2019-03-17 16:56:41 231

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除