- 博客(14)
- 收藏
- 关注
原创 串的基本操作
串的基本操作串的定义1、由 0 个或多个 字符 组成的 有限的 序列,通常记为:s =“a1 a2 a3 … ai …an” ( n≥0 ,且n是有限的)。其中的引号不属于串,只是一个标记作用!2、n就是串的长度,且字符串里的字符 ai 的值由 字母、数字或其他字符 组成的。串的相关术语1、空串:不含任何字符的串,长度 = 0,用符号 f 表示。也就是说空串也是字符串!2、空格串:...
2019-04-29 20:55:38 8553 1
原创 动态规划
一、什么是动态规划动态规划,Dynamic Programming(“Programming”为“规划”,而非指“程序”、“编程”),研究多步决策过程最优化问题的一种数学方法,英文缩写DP。在动态规划中,为了寻找一个问题的最优解(即最优决策过程),将整个问题划分成若干个相应的阶段,并在每个阶段都根据先前所作出的决策作出当前阶段最优决策,进而得出整个问题的最优解。二、什么样的题能使用动态规划1...
2019-04-25 20:23:10 155
原创 线性表和线性表的顺序存储结构
线性表一、定义:零个或多个数据元素的有限序列,由n(n>=0 )个数据特性相同的元素构成的有限序列;当n=0时,线性表为空表。二、非空的线性表或线性结构的特点:1、存在唯一的一个被称作“第一个”的数据元素2、存在唯一一个被称作“最后一个”的数据元素3、除第一个之外,结构中的每个数据元素均只有一个前驱4、除最后一个之外,结构中的每个数据元素均只有一个后继三、线性表抽象数据类型...
2019-04-18 20:54:23 566
原创 图论--最短路径问题
最短路径问题一、最短路径算法:首先介绍多源最短路径算法(求任意两点之间的最短路径)Floyd–Warshall算法时间复杂度O(n^3)以下图为例,下面是Floyd–Warshall详解我们假设当任意两点之间不允许经过第三个点时,这些城市之间的最短路程就是原图不变。(个点之间的直线距离最短)现在假设任意两点之间的最短路径必须经过顶点1,然后求最短路程。只需要判断e[i][1]+e[...
2019-04-16 21:02:39 689
原创 图论---邻接矩阵
图论中的最短路径问题一、图的定义图是由顶点集合(Vertex)及顶点间的关系集合组成的一种数据结构:Graph=( V, E )V = {x | x ∈某个数据对象 } 是顶点的有穷非空集合;E ={ (x, y) | x, y ∈V } 是顶点之间关系的有穷集合,也叫做边(Edge)集合。注:∈为数学符号,表示属于的意思 。例:x∈y:表示x属于y的意思。在图中的数据元素通常称为顶点...
2019-04-16 20:37:54 11308
原创 基础图论(最短路径)
最短路径问题一、迪杰斯拉特算法求单源最短路径问题:1)设A[1…n,1…n]为有向图的带权邻接矩阵,A[i,j]表示弧(Vi,Vj)上的权值,若(Vi,Vj)不存在,则A[i,j]为无穷大;S 为已找到从源点V0出发的最短路径的终点集合,初始状态为{V0};DIST[1…n]为个终点当前找到的最短路径长度,初始值为DIST[i]=A[V0,i];2)选择u,使DIST[u]=min{DIST...
2019-04-10 23:51:02 310
原创 【深搜】和为零
题目描述请考虑一个由1到N(N=3, 4, 5 … 9)的数字组成的递增数列:1 2 3 … N。 现在请在数列中插入“+”表示加,或者“-”表示减,抑或是“ ”表示空白,来将每一对数字组合在一起(请不在第一个数字前插入符号)。 计算该表达式的结果并注意你是否得到了和为零。 请你写一个程序找出所有产生和为零的长度为N的数列。输入单独的一行表示整数N (3 <= N <= 9)。...
2019-04-09 23:18:00 233
原创 广搜(广度优先搜索BFS)
广度优先搜索广度优先搜索算法(又称宽度优先搜索)是最简便的图的搜索算法之一,其别名又叫BFS,属于一种盲目搜寻法,目的是系统地展开并检查图中的所有节点,以找寻结果。换句话说,它并不考虑结果的可能位置,彻底地搜索整张图,直到找到结果为止。一、基本概念广搜是一种图形搜索演算法。简单的说,BFS是从根节点开始,沿着树的宽度遍历树的节点,如果发现目标,则演算终止。所谓宽度优先算法,就是算法自始至终...
2019-04-08 14:12:37 4122 1
原创 深搜(深度优先搜索DFS)
深搜(深度优先搜索)深度优先搜索属于图算法的一种,英文缩写为DFS,其过程简要来说是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次。一、从枚举到深搜在我们遇到的一些问题当中,有些问题我们不能够确切的找出数学模型,即找不出一种直接求解的方法,解决这一类问题,我们一般采用搜索的方法解决。搜索就是用问题的所有可能去试探,按照一定的顺序、规则,不断去试探,直到找到问题的解,试完...
2019-04-06 22:44:46 2556
原创 枚举(穷举)算法
枚举算法一、所谓枚举1、枚举法的本质就是从所有候选答案中去搜索正确的解。它的核心思想就是枚举所有的可能2、使用该算法需要满足两个条件:(1)可预先确定候选答案的数量(2)候选答案的范围在求解之前必须有一个确定的集合3、基本框架二、基本思想1、枚举算法简单粗暴,他暴力的枚举所有可能,尽可能地尝试所有的方法。虽然枚举算法非常暴力,而且速度可能很慢,但确实我们最应该优先考虑的!因为枚...
2019-04-05 23:24:34 3232 2
原创 贪心算法
贪心算法一、定义:贪心算法就是遵循某种规则,不断贪心的选取当前最优策略的算法设计方法。不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解。二、思路贪心算法的基本思路是从问题的某一个初始解出发一步一步地进行,根据某个优化测度,每一步都要确保能获得局部最优解。每一步只考虑一个数据,他的选取应该满足局部优化的条件。若下一个数据和部分最优解连在一起不再是可行解时,就不把该数据添加到部分解...
2019-04-03 20:52:09 149
原创 nyoj 1140 鸡蛋栈
鸡蛋栈内存限制:64MB时间限制:1000ms特判: No难度:1继队列之后,我们又来学习一种新的数据结构——栈。将队列的头部封闭后,就构成了栈这种数据结构,原来队列头部就是栈底,原来队列的尾部就是栈顶。栈与队列的不同就在于栈的底端是封闭的。所以,栈的插入和删除操作只能在栈的一端进行,即栈顶。栈的插入操作称为入栈,删除操作称为出栈。底________________...
2019-04-02 23:11:39 135
原创 【STL】优先队列(priority_queue)
优先队列一、定义:普通的队列是一种先进先出的数据结构,元素在队列尾追加,从队列头删除。在优先队列中,元素被赋予优先级。当访问元素时,具有最高优先级的元素最先删除。优先队列具有最高级先出的特征。二、priority_queue1.头文件:#include <queue>2.基本操作:empty() //如果队列为空,则返回真pop() //删除对顶元素...
2019-04-02 22:52:32 414
原创 【STL】栈+队列
【STL】stack+queue一、定义栈:栈是一种特殊的后进先出线性表,只能在表尾进行插入和删除,表尾端为栈顶(top),表头端为栈底(bottom)。队列:与栈相反,是一种先进先出的线性表,它只允许在表的一段进行插入,在另一端删除元素,和日常生活中的排队是一致的,允许插入的一端是对位,允许喊出的一端是队头。二、栈和队列的特点栈: 后进先出队列:先进先出三、栈和队列的使用1、...
2019-04-01 23:40:45 218
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人