- 博客(16)
- 收藏
- 关注
原创 算法设计与分析_回溯算法
回溯算法1.回溯法是一种组织搜索的一般技术,有“通用的解题法”之称,用它可以系统的搜索一个问题的所有解或任一解。2.有许多问题,当需要找出它的解集或者要求回答什么解是满足某些约束条件的最佳解时,往往要使用回溯法。①可以系统地搜索一个问题的所有解或任意解,既有系统性又有跳跃性。②回溯法的基本做法是搜索,或是一种组织得井井有条的,能避免不必要搜索的穷举式搜索法。③这种以深度优先的方式系统地搜...
2020-05-01 10:23:31
564
原创 算法设计与分析_贪心算法②
删数问题给定n位正整数a,去掉其中任意k≤n个数字后,剩下的数字按原次序排列组成一个新的正整数。对于给定的n位正整数a和正整数k,设计一个算法找出剩下数字组成的新数最小的删数方案。输入:第1行是1个正整数a,第2行是正整数k。输出:对于给定的正整数a,编程计算删去k个数字后得到的最小数。算法实现:string a; //n位数aint k;cin>>...
2020-05-01 09:31:45
685
原创 算法设计与分析_贪心算法①
贪心算法①在求最优解问题的过程中,依据某种贪心标准,从问题的初始状态出发,直接去求每一步的最优解,通过若干次的贪心选择,最终得出整个问题的最优解,这种求解方法就是贪心算法。②从贪心算法的定义可以看出,贪心算法不是从整体上考虑问题,它所做出的选择只是在某种意义上的局部最优解,而由问题自身的特性决定了该题运用贪心算法可以得到最优解。③如果一个问题可以同时用几种方法解决,贪心算法应该是最好的选择之...
2020-05-01 09:07:48
394
原创 算法设计与分析_动态规划②
最大子段和问题① 给定由n个整数(包含负整数)组成的序列a1,a2,…,an,求该序列子段和的最大值。i.当所有整数均为负值时定义其最大子段和为0。②所求的最优值为:i.例如,当(a1,a2, ……a7,a8)=(1,-3, 7,8,-4,12, -10,6)时,最大子段和为:③bj是1到j位置的最大子段和:④由bj的定义易知,当bj-1>0时bj=bj-1+aj,否则b...
2020-05-01 08:49:01
372
原创 算法设计与分析_动态规划①
一、动态规划的基本思想动态规划算法通常用于求解具有某种最优性质的问题。在这类问题中,可能会有许多可行解。每一个解都对应于一个值,我们希望找到具有最优值的解。基本思想是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。适合于用动态规划求解的问题,经分解得到子问题往往不是互相独立的。若用分治法来解这类问题,则分解得到的子问题数目太多,有些子问题被重复计算了很多...
2020-04-30 18:50:21
890
原创 算法设计与分析_递归与分治
递归算法1.递归需要有边界条件、递归前进段和递归返回段。①当边界条件不满足时,递归前进;②当边界条件满足时,递归返回。③注意:在使用递增归策略时,必须有一个明确的递归结束条件,称为递归出口,否则将无限进行下去(死锁)。2.递归的缺点:①递归算法解题的运行效率较低。②在递归调用过程中,系统为每一层的返回点、局部变量等开辟了堆栈来存储。递归次数过多容易造成堆栈溢出等。集合的全排列问题...
2020-04-29 21:16:50
476
原创 算法设计与分析_递推算法及例题
递推算法算法特点是:一个问题的求解需一系列的计算,在已知条件和所求问题之间总存在着某种相互联系的关系,在计算时,如果可以找到前后过程之间的数量关系(即递推式),那么,从问题出发逐步推到已知条件,此种方法叫逆推。数字三角形如上图所示为一个数字三角形。请编一个程序计算从顶到底的某处的一条路径,使该路径所经过的数字总和最大。只要求输出总和。1、 一步可沿左斜线向下或右斜线向下走;2、 三角形...
2020-04-29 20:10:53
1352
原创 算法设计与分析_第一章_绪论
第一章 绪论1.1为什么要学习算法1.2算法及其重要特性1.3算法的描述方法1.4算法设计的一般过程1.5重要的问题类型1.1为什么要学习算法1.算法——程序的灵魂问题的求解过程:分析问题→设计算法→编写程序→整理结果程序设计研究的四个层次:2.算法→方法学→语言→工具提高分析问题的能力算法的形式化→思维的逻辑性、条理性1.2算法及其重要特性1.算法(Algorith...
2020-04-29 19:19:10
489
数据结构_第八章_排序
第八章 排序8.1排序的基本概念8.2插入排序8.3交换排序8.4选择排序8.5归并排序8.6分配排序8.1排序的基本概念排序:给定一组记录的集合{r1, r2, ……, rn},其相应的关键码分别为{k1, k2, ……, kn},排序是将这些记录排列成顺序为{rs1, rs2, ……, rsn}的一个序列,使得相应的关键码满足ks1≤ks2≤……≤ksn(称为升序)或ks1≥k...
2020-01-11 21:17:35
196
原创 数据结构_第七章_查找
第七章 查找7.1查找的基本概念7.2线性表的查找技术7.3树表的查找技术7.4散列表的查找技术7.1查找的基本概念查找的基本概念列表:由同一类型的数据元素组成的集合。关键码:数据元素中的某个数据项,可以标识列表中的一个或一组数据元素。键值:关键码的值。主关键码:可以唯一地标识一个记录的关键码。次关键码:不能唯一地标识一个记录的关键码。查找 :在具有相同类型的记录构成的集合...
2019-12-01 09:21:34
207
原创 数据结构_第六章_图
第六章 图6.1图的逻辑结构6.2图的存储结构及实现6.3图的连通性6.4最小生成树6.5最短路径6.6AOV网与拓扑排序6.7AOE网与关键路径6.1 图的逻辑结构若顶点vi和vj之间的边没有方向,则称这条边为无向边,表示为(vi,vj)。如果图的任意两个顶点之间的边都是无向边,则称该图为无向图。若从顶点vi到vj的边有方向,则称这条边为有向边,表示为<vi,vj&g...
2019-12-01 09:06:52
378
原创 数据结构_第五章_数和二叉树
第五章 数和二叉树5.1树的逻辑结构5.2树的存储结构5.3二叉树的逻辑结构5.4二叉树的存储结构及实现5.5树、森林与二叉树的转换5.6哈夫曼树5.1树的逻辑结构树的定义树:n(n≥0)个结点的有限集合。当n=0时,称为空树;任意一棵非空树满足以下条件:⑴ 有且仅有一个特定的称为根的结点;⑵ 当n>1时,除根结点之外的其余结点被分成m(m>0)个互不相交的有限集...
2019-11-06 21:55:22
139
原创 数据结构_第三章_栈和队列
第三章 栈和队列3.1特殊的线性表——栈3.2特殊的线性表——队列3.1特殊的线性表——栈3.1.1栈的逻辑结构栈:限定仅在表尾进行插入和删除操作的线性表。空栈:不含任何数据元素的栈。允许插入和删除的一端称为栈顶,另一端称为栈底。栈的操作特性:后进先出。3.1.2栈的顺序存储结构及实现顺序栈类//顺序栈类的声明const int MAX_SIZE=100;templa...
2019-11-02 20:25:01
197
原创 数据结构_第二章_线性表
第二章 线性表2.1线性表的逻辑结构2.2线性表的顺序存储结构及实现2.3线性表的链式存储结构及实现2.4顺序表和单链表的比较2.5线性表的其他存储方法2.6线性表应用举例2.1线性表的逻辑结构线性表( Linear List )的定义线性表是零个或多个具有相同类型的数据元素的有限序列。数据元素的个数定义为线性表的长度 。长度等于零时称为空表,一个非空表通常记为 L =...
2019-10-30 18:46:56
170
原创 数据结构_第一章_绪论
第一章 绪论1.1 数据结构在程序设计中的作用1.2 本书讨论的主要内容1.3 数据结构的基本概念1.4 算法与算法分析1.1 数据结构在程序设计中的作用数据结构发展的三个阶段(1)无结构阶段(2)结构化阶段:程序=数据结构+算法(3)面向对象阶段:对象=数据结构+算法程序=对象+对象+。。。。用计算机求解问题的过程(1)抽象出问题的模型(2)求该模型的解1.2数据...
2019-10-30 18:11:58
316
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人