算法复习题(精炼版)

合集下载

算法设计复习题

算法设计复习题

算法设计复习题一、单选题1、下面关于算法的描述,正确的是(d )A、一个算法只能有一个输入B、算法只能用框图来表示C、一个算法的执行步骤可以是无限的D、一个完整的算法,不管用什么方法来表示,都至少有一个输出结果2、一位爱好程序设计的同学,想通过程序设计解决“韩信点兵”的问题,他制定的如下工作过程中,更恰当的是(c )A、设计算法,编写程序,提出问题,运行程序,得到答案B、分析问题,编写程序,设计算法,运行程序,得到答案C、分析问题,设计算法,编写程序,运行程序,得到答案D、设计算法,提出问题,编写程序,运行程序,得到答案3、有5位运动员100米成绩依次为13.8,12.5,13.0,13.2,13.4,(c)若采用选择排序算法对其进行从小到大排序,则第二趟的排序结果是(A) 12.5 13.8 13.2 13.4 13.0 (B) 12.5 13.4 13.2 13.8 13.0(C) 12.5 13.0 13.8 13.2 13.4 (D) 12.5 13.2 13.8 13.4 13.04、下面说法正确的是(a )A、算法+数据结构=程序B、算法就是程序C、数据结构就是程序D、算法包括数据结构5、数列1,4,7,10,13,……的递推公式为( d )。

(A) f(1)=1;f(n)=n+3 (B) f(1)=1;f(n)=n*2-1(C) f(1)=1;f(n)=n*2+1 (D) f(1)=1;f(n)=f(n-1)+36、用选择排序法对数据7,6,3,9,2从大到小排序,共需经过多少次数据对调。

a(A) 3 (B) 4 (C) 5 (D) 107、动态规划算法的基本要素为(c )。

A、最优子结构性质与贪心选择性质B、重叠子问题性质与贪心选择性质C、最优子结构性质与重叠子问题性质D.、预排序与递归调用8、算法分析中,记号O表示( b ),记号Ω表示(a),记号Θ表示(d )。

A、渐进下界B、渐进上界C、非紧上界D、紧渐进界E、非紧下界9、以下关于渐进记号的性质是正确的有:(a)A、f(n)(g(n)),g(n)(h(n))f(n)(h(n))=Θ=Θ?=ΘB、f(n)O(g(n)),g(n)O(h(n))h(n)O(f(n))==?=C、O(f(n))+O(g(n)) = O(min{f(n),g(n)})D、f(n)O(g(n))g(n)O(f(n))=?=10、下列算法中通常以自底向上的方式求解最优解的是( b )。

高中算法复习 经典习题(含详细答案)

高中算法复习   经典习题(含详细答案)

1、如图所示的程序框图中,则第3个输出的数是( )A .1 B. 32 C.2 D. 521、解析:前3个分别输出的数是1,32,2.故选C .2.如图给出的是求201614121+⋅⋅⋅+++的值的一个程序框图,其中判断框内应填入的条件是 ( )A .i>10? B. i<10? C .i>20? D .i<20?2解析:通过列表,我们能清楚了解程序的每一步中的各个变量是怎样变化的, 第一次:11,,42i S n ===,第二次:112,,624i S n ==+=,…依此可知循环的条件是i>10?.选A第1题 第2题3.(2007年高考山东卷)阅读右边的程序框图,若输入的n 是100,则输出的变量S 和T 的值依次是( ) A .2550,2500 B .2550,2550开始021S n i ===,,1S S n=+2n n =+1i i =+结束是否输出S开始12A =1N =12A A =+1N N =+4?N >结束是否输出AC .2500,2500D .2500,25503解析:依据框图可得1009896...22550S =++++=,999795...12500T =++++=.选A.二、填空题 4.(2008年高考山东卷)执行右边的程序框图,若p =0.8,则输出的n =________..4解析:第一次循环后,10.82S =<,此时n =2;第二次循环后,110.824S =+<,开始 00S T ==,T T n =+S S n =+2?n ≥结束是否 输出S T 、 输入n1n n =- 1n n =-此时n =3;第三次循环后,1110.8248S =++>,此时4n =,输出,故填4.5.如果执行右面的程序框图,那么输出的S =5解析:2461002550S =++++=6.(2009年高考福建卷改编)阅读如图所示的程序框图,运行相应的程序,输出的结果是________.6、解析:试将程序分步运行:第一循环:S =11-2=-1,n =2;第二循环:S =11-(-1)=12,n =3;第三循环:S =11-12=2,n =4.答案:47、执行下面的程序框图,输出的T =________.7解析:据框图依次为:第6题第7题⎩⎪⎨⎪⎧ S =5,n =2,T =2,⎩⎪⎨⎪⎧ S =10,n =4,T =6,⎩⎪⎨⎪⎧ S =15,n =6,T =12,⎩⎪⎨⎪⎧ S =20,n =8,T =20,⎩⎪⎨⎪⎧S =25,n =10,T =30,故此时应输出T =30.答案:308.(2010年南京市高三调研)阅读下面的流程图,若输入a =6,b =1,则输出的结果是________.8解析:a =6,b =1,则x =5>2,再次进入循环得a =4,b =6,此时x =2,退出循环.故输出2.答案:29.阅读如图所示的程序框图,若输入的n 是100,则输出的变量S 的值是多少?第9题9、解析:由循环结构可得S =100+99+…+3+2=5049. 故输出的变量S 的值为5049.答案:504910.若R =8,则下列流程图的运行结果为___4___.第10题11、3.给出一个如图所示的程序框图,若要使输入的x 的值与输出的y 的值相等,则x 的可能值的个数为________. 11、解析:x ≤2时,x 2=x ,∴x =0或x =1;2<x ≤5时,2x -3=x ,∴x =3;x >5时,1x=x ,∴x =-1或x =1(都舍去).所以共有3个可取值.答案:312、已知流程图如图所示,该程序运行后,为使输出的b 值为16,则循环体的判断框内①处应填____.12解析:a =1时进入循环,此时b =21=2;a =2时再进入循环,此时b =22=4;a =3时再进入循环,此时b =24=16,∴a =4时应跳出循环,∴循环满足的条件为a ≤3,∴填3.答案:313.按如图所示的程序框图运行后,输出的结果是63,则判断框中的整数M 的值是________.解析:A =1≤M ,“是”,则S =2×1+1=3,A 变为2; A =2≤M ,“是”,则S =2×3+1=7,A 变为3; A =3≤M ,“是”,则S =2×7+1=15,A 变为4; A =4≤M ,“是”,则S =2×15+1=31,A 变为5; A =5≤M ,“是”,则S =2×31+1=63,A 变为6; A =6≤M ,“否”,则跳出循环,故填5.14、(2009年高考上海卷)某算法的程序框图如图所示,则输出量y 与输入量x 满足的关系式是________.解析:由程序框图的条件结构知:x >1时,y =x -2; x ≤1时,y =2x .故y = ⎩⎪⎨⎪⎧2x (x ≤1),x -2 (x >1).第11题第12题 第13题。

计算机算法考试试题

计算机算法考试试题

计算机算法考试试题在当今数字化的时代,计算机算法的重要性日益凸显。

无论是在解决复杂的科学问题,还是在优化日常的业务流程中,高效准确的算法都发挥着关键作用。

接下来,让我们一同走进计算机算法的考试世界,看看其中的一些典型试题。

一、选择题1、以下哪种算法的时间复杂度最低?()A O(n^2)B O(n log n)C O(log n)D O(n)这道题主要考查对不同算法时间复杂度的理解。

O(log n) 表示算法的执行时间与输入规模的对数成正比,增长速度最慢,因此时间复杂度最低。

2、冒泡排序在最坏情况下的时间复杂度为()A O(n)B O(n log n)C O(n^2)D O(log n)冒泡排序在最坏情况下,需要对数组进行多次遍历和比较交换,时间复杂度为 O(n^2)。

3、以下关于贪心算法的描述,错误的是()A 贪心算法总是做出在当前看来最好的选择B 贪心算法不一定能得到最优解C 贪心算法的效率通常很高D 贪心算法能适用于所有问题贪心算法是一种在每一步都做出当前最优选择的算法,但它并不一定能保证得到全局最优解,而且并不是所有问题都适合用贪心算法解决。

二、填空题1、二分查找算法要求待查找的数组是_____的。

答案:有序。

二分查找是通过不断将数组对半分割来查找目标元素,所以数组必须是有序的。

2、快速排序的平均时间复杂度为_____。

答案:O(n log n) 。

快速排序在平均情况下具有较好的性能。

3、一个算法的空间复杂度是指_____。

答案:算法在运行过程中临时占用的存储空间大小。

三、简答题1、请简述动态规划算法的基本思想。

动态规划算法的基本思想是将原问题分解成若干个子问题,并保存子问题的解,避免重复计算,通过子问题的解逐步推导出原问题的解。

它通常适用于具有重叠子问题和最优子结构性质的问题。

2、比较深度优先搜索和广度优先搜索算法的特点。

深度优先搜索是沿着一条路径尽可能深地探索下去,直到无法继续,然后回溯;广度优先搜索则是逐层地遍历节点。

算法基础期末考试题及答案

算法基础期末考试题及答案

算法基础期末考试题及答案一、选择题(每题2分,共20分)1. 算法的时间复杂度是指:A. 算法执行时间B. 算法执行的指令条数C. 算法执行所需的内存大小D. 算法执行时所需的数据量答案:B2. 在排序算法中,冒泡排序的平均时间复杂度是:A. O(n)B. O(n log n)C. O(n^2)D. O(1)答案:C3. 递归算法的基本原理是:A. 循环B. 迭代C. 分治D. 重复答案:C4. 哈希表的冲突解决方法不包括:A. 链地址法B. 开放寻址法C. 再散列法D. 排序答案:D5. 动态规划与分治算法的区别在于:A. 递归B. 贪心选择C. 重叠子问题D. 优化子结构答案:C6. 二叉树的深度优先搜索遍历方法包括:A. 前序遍历B. 中序遍历C. 后序遍历D. 所有选项答案:D7. 快速排序算法的最好时间复杂度是:A. O(n)B. O(n log n)C. O(n^2)D. O(log n)答案:B8. 图的广度优先搜索(BFS)使用的是:A. 栈B. 队列C. 链表D. 堆答案:B9. Dijkstra算法是用于解决:A. 最小生成树问题B. 最短路径问题C. 图的连通性问题D. 图的遍历问题答案:B10. 拓扑排序是针对哪种类型的图:A. 有向无环图B. 无向图C. 有向图D. 完全图答案:A二、简答题(每题5分,共30分)1. 请简述什么是贪心算法,并给出一个应用实例。

答案:贪心算法是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是全局最好或最优的算法策略。

例如,在硬币找零问题中,总是优先使用最大面额的硬币进行找零。

2. 解释什么是二分查找算法,并说明其时间复杂度。

答案:二分查找算法是一种在有序数组中查找特定元素的搜索算法。

其基本思想是将数组分成两半,比较中间元素与目标值,如果目标值等于中间元素,则查找成功;如果目标值小于中间元素,则在左侧子数组中继续查找;如果目标值大于中间元素,则在右侧子数组中继续查找。

算法期末复习题final

算法期末复习题final

算法期末复习题final算法分析与设计期末复习题⽬⼀、选择题1.下列算法中通常以⾃底向上的⽅式求解最优解的是( B )。

A、备忘录法B、动态规划法C、贪⼼法D、回溯法2、衡量⼀个算法好坏的标准是(C)。

A运⾏速度快B占⽤空间少C时间复杂度低D代码短3、以下不可以使⽤分治法求解的是(D)。

A棋盘覆盖问题B选择问题C归并排序4.下列是动态规划算法基本要素的是(A、定义最优解B、构造最优解D0/1 背包问题D )。

C、算出最优解D、⼦问题重叠性质5.采⽤⼴度优先策略搜索的算法是( A )。

A、分⽀界限法B、动态规划法C、贪⼼法D、回溯法6、合并排序算法是利⽤( A )实现的算法。

A、分治策略B、动态规划法C、贪⼼法D、回溯法7、下列不属于影响程序执⾏时间的因素有哪些?( C )A.算法设计的策略 B .问题的规模C.编译程序产⽣的机器代码质量 D .计算机执⾏指令的速度8、使⽤分治法求解不需要满⾜的条件是(A)。

A⼦问题必须是⼀样的B⼦问题不能够重复9、下⾯问题(B)不能使⽤贪⼼法解决。

A 单源最短路径问题BN皇后问题C最⼩花费⽣成树问题D背包问题10.⼀个问题可⽤动态规划算法或贪⼼算法求解的关键特征是问题的(B)。

A、重叠⼦问题B、最优⼦结构性质C、贪⼼选择性质D、定义最优解11.以深度优先⽅式系统搜索问题解的算法称为A、分⽀界限算法B、概率算法( D )C、贪⼼算法。

D、回溯算法12. 实现最长公共⼦序列利⽤的算法是( B )。

A、分治策略B、动态规划法C、贪⼼法D、回溯法13.下列算法具有最优⼦结构的算法是(D)A.概率算法 B .回溯法 C .分⽀限界法D.动态规划法14.算法分析是(C)A.将算法⽤某种程序设计语⾔恰当地表⽰出来B.在抽象数据集合上执⾏程序,以确定是否会产⽣错误的结果C.对算法需要多少计算时间和存储空间作定量分析D.证明算法对所有可能的合法输⼊都能算出正确的答案15衡量⼀个算法好坏的标准是(C)A.运⾏速度快B. 占⽤空间少C.时间复杂度低D. 代码短16.⼆分搜索算法是利⽤(A)实现的算法。

算法测试题及答案

算法测试题及答案

算法测试题及答案一、选择题1. 以下哪个选项不是排序算法?A. 冒泡排序B. 选择排序C. 快速排序D. 深度优先搜索答案:D2. 在二叉树中,深度为5的节点最多有多少个?A. 16B. 32C. 64D. 31答案:D二、填空题1. 递归算法的基本思想是 _ ,即把问题分解成相同但规模更小的问题。

答案:分而治之2. 动态规划与分治法的不同之处在于动态规划会 _ ,而分治法则不会。

答案:存储子问题的解三、简答题1. 请简述什么是贪心算法,并给出一个例子。

答案:贪心算法是一种在每一步选择中都采取在当前状态下最好或最优的选择,从而希望导致结果是全局最好或最优的算法策略。

例如,活动选择问题,给定一系列活动,每个活动都有一个开始时间和结束时间,贪心算法会按照结束时间的早晚来选择活动,从而最大化参与活动的数量。

2. 描述快速排序算法的基本思想。

答案:快速排序算法是一种分治策略,基本思想是选择一个元素作为“基准”(pivot),然后将数组分为两个子数组,一个包含所有小于基准的元素,另一个包含所有大于基准的元素。

这个过程称为分区(partitioning)。

之后,递归地将分区过程应用到两个子数组上,直到每个子数组只有一个元素或为空。

四、计算题1. 给定一个数组 [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5],请使用快速排序算法对其进行排序,并给出排序后的数组。

答案:使用快速排序算法对给定数组进行排序后,得到的数组为 [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]。

2. 假设有一个二叉搜索树,其根节点的值为10,现在要删除值为5的节点,请描述删除过程。

答案:删除二叉搜索树中的节点分为三种情况:- 情况1:要删除的节点没有子节点,直接删除该节点。

- 情况2:要删除的节点只有一个子节点,用其子节点替换该节点。

- 情况3:要删除的节点有两个子节点,找到该节点的直接前驱或直接后继,用其值替换要删除的节点,然后删除直接前驱或直接后继。

算法分析复习题

算法分析复习题

算法分析复习题⼀、单项选择题:1、算法的五⼤特征是确定性、有穷性、输⼊、输出和可⾏性。

其输⼊⾄少是( A )个。

A、0B、1C、n D、-12、⼤整数的乘法是利⽤的算法( C )。

A、贪⼼法B、动态规划法C、分治策略D、回溯法3、采⽤贪⼼算法的最优装载问题的主要计算量在于将集装箱依其重量从⼩到⼤排序,故算法的时间复杂度为( B )。

A、O(n2n)B、O(nlogn)C、O(2n)D、O(n)4、⼀个问题可⽤动态规划算法或贪⼼算法求解的关键特征是问题的( B )。

A、重叠⼦问题B、最优⼦结构性质C、贪⼼选择性质D、定义最优解5、设⼀个算法的输⼊规模为n,Dn是所有输⼊的集合,任⼀输⼊I∈Dn,P(I)是I出现的概率,有=1,T(I)是算法在输⼊I下所执⾏的基本语句次数,则该算法的平均执⾏时间为(D)。

A、B、C、D、6、把递归算法转化为⾮递归算法有如下两种基本⽅法:(1)直接⽤循环结构的算法替代递归算法。

(2)⽤( A )模拟系统的运⾏过程,通过分析只保存必须保存的信息,从⽽⽤⾮递归算法替代递归算法。

A、栈B、队列C、顺序表D、链表7、算法分析中,记号表⽰(A)。

A、渐进下界B、渐进上界C、⾮紧上界D、紧渐进界9、贪⼼算法与动态规划算法的主要区别是(B )。

A、最优⼦结构B、贪⼼选择性质C、构造最优解D、定义最优解10、回溯法在问题的解空间树中,按(D)策略,从根结点出发搜索解空间树。

A、⼴度优先B、活结点优先C、扩展结点优先D、深度优先11. 回溯法的问题的解空间树是(B),并不需要在算法运⾏时构造⼀棵真正的树结构,然后再在该解空间树中搜索问题的解,⽽是只存储从根结点到当前结点的路径。

A、顺序⽅式的⼆叉树B、虚拟的树C、满⼆叉树D、完全⼆叉树12. 应⽤回溯法求解问题时,⾸先应该明确问题的解空间。

解空间中满⾜约束条件的决策序列称为(C)。

A、最优解B、局部最优解C、可⾏解D、最优⼦序列解13. ⼀个问题的最优解包含其⼦问题的最优解,则称此问题具有(D)性质。

算法复习题(精炼版)

算法复习题(精炼版)

填空题动态规划算法的基本要素为:最优子结构性质与重叠子问题性质1)算法分析中,记号O表示渐进上界,记号Ω表示渐进下界,记号Θ表示紧渐进界。

2)回溯法在问题的解空间树中,按深度优先策略,从根结点出发搜索解空间树。

3)分支限界法在问题的解空间树中,按广度优先策略,从根结点出发搜索解空间树。

所谓贪心选择性质是指(所求问题的整体最优解可以通过一系列局部最优的选择,即贪心选择来达到)。

所谓最优子结构性质是指(问题的最优解包含了其子问题的最优解)。

回溯法是指(具有限界函数的深度优先生成法)。

回溯法的算法框架按照问题的解空间一般分为(子集树)算法框架与(排列树)算法框架。

4)二分搜索算法是利用分治策略实现的算法。

5)衡量一个算法好坏的标准是时间复杂度低6)最长公共子序列算法利用的算法是动态规划法7)Strassen矩阵乘法是利用分治策略实现的算法8)回溯法搜索状态空间树是按照深度优先遍历的顺序。

9)算法中通常以自底向下的方式求解最优解的是动态规划法10)背包问题的贪心算法所需的计算时间为O(nlogn)11)0-1背包问题的回溯算法所需的计算时间为O(n2n)12)用动态规划算法解决最大字段和问题,其时间复杂性为n13)一个算法就是一个有穷规则的集合,其中之规则规定了解决某一特殊类型问题的一系列运算,此外,算法还应具有以下五个重要特性:_有穷性,确定性,可行性,输入,输出。

1.算法的复杂性有时间复杂性和空间复杂性之分。

2、程序是算法用某种程序设计语言的具体实现。

3、算法的“确定性”指的是组成算法的每条指令是清晰的,无歧义的。

4.矩阵连乘问题的算法可由动态规划设计实现。

6、算法是指解决问题的一种方法或一个过程。

7、从分治法的一般设计模式可以看出,用它设计出的程序一般是递归算法。

8、问题的最优子结构性质是该问题可用动态规划算法或贪心算法求解的关键特征。

9、以深度优先方式系统搜索问题解的算法称为回溯法。

10、数值概率算法常用于数值问题的求解。

算法复习题答案

算法复习题答案

算法复习题答案一、选择题1. 算法的时间复杂度是指:A. 算法执行所需的时间B. 算法执行所需的内存空间C. 算法执行时所需操作的数量D. 算法执行时占用的CPU资源答案:C2. 在排序算法中,最坏情况下时间复杂度为O(n^2)的排序方法是:A. 快速排序B. 归并排序C. 堆排序D. 冒泡排序答案:D3. 递归算法的基本原理是:A. 重复执行B. 循环执行C. 将问题分解为更小的子问题D. 将问题转化为更复杂的问题答案:C二、填空题1. 动态规划算法通常用于解决具有_______性质的问题。

答案:最优子结构2. 哈希表的冲突可以通过_______方法来解决。

答案:链地址法或开放地址法3. 贪心算法在每一步选择中都采取在当前状态下的_______操作。

答案:最优三、简答题1. 请简述二分查找算法的基本原理及其时间复杂度。

答案:二分查找算法是一种在有序数组中查找特定元素的算法。

其基本原理是将目标值与数组中间的元素进行比较,如果目标值等于中间元素,则查找成功;如果目标值小于中间元素,则在数组的左半部分继续查找;如果目标值大于中间元素,则在数组的右半部分继续查找。

这个过程将不断重复,直到找到目标值或查找范围为空为止。

二分查找算法的时间复杂度为O(log n)。

2. 什么是分治算法?请举例说明。

答案:分治算法是一种算法设计技术,它将一个复杂的问题分解成若干个规模较小但相似的子问题,递归地解决这些子问题,然后将子问题的解合并以解决原始问题。

例如,归并排序就是一种典型的分治算法,它将待排序的数组分成两半,分别对这两半进行排序,然后将排序好的两半合并成一个有序数组。

四、计算题1. 给定一个数组A = [3, 5, 1, 4, 2],请使用快速排序算法对其进行排序,并给出排序过程中的每一步操作。

答案:快速排序的基本思想是选择一个元素作为“基准”(pivot),然后将数组分为两部分,一部分包含所有小于基准的元素,另一部分包含所有大于基准的元素。

计算机算法复习题

计算机算法复习题

计算机算法复习题## 计算机算法复习题### 一、选择题1. 在排序算法中,时间复杂度为O(nlogn)的算法是:A. 冒泡排序B. 快速排序C. 选择排序D. 插入排序2. 以下哪个算法是用于解决最近邻问题的?A. Dijkstra算法B. A*算法C. 动态规划D. 贪心算法### 二、填空题1. 在图的遍历中,深度优先搜索(DFS)使用的栈是_________。

2. 快速排序算法的核心思想是_________。

3. 在动态规划中,解决背包问题通常使用_________方法。

### 三、简答题1. 描述二分查找算法的基本步骤,并说明其时间复杂度。

二分查找算法的基本步骤如下:- 首先,设定查找区间的左右端点。

- 在查找区间的中间位置取一个值,与目标值进行比较。

- 如果中间值等于目标值,则查找成功。

- 如果中间值小于目标值,则在右半区间继续查找。

- 如果中间值大于目标值,则在左半区间继续查找。

- 重复以上步骤,直到找到目标值或查找区间为空。

二分查找算法的时间复杂度为O(logn)。

2. 什么是动态规划?请举例说明其应用场景。

动态规划是一种通过将复杂问题分解为更简单的子问题来求解的方法。

它适用于具有重叠子问题和最优子结构特性的问题。

在动态规划中,我们首先解决子问题,并将结果存储在一个表格中,以避免重复计算。

这样,当需要解决更大的子问题时,可以直接使用表格中的结果。

一个典型的动态规划应用场景是斐波那契数列的计算。

传统的递归方法会重复计算很多子问题,而使用动态规划,我们可以存储已计算的斐波那契数,从而大大提高计算效率。

### 四、编程题给定一个未排序的整数数组,请使用快速排序算法对其进行排序,并输出排序后的结果。

```pythondef quick_sort(arr):if len(arr) <= 1:return arrpivot = arr[len(arr) // 2]left = [x for x in arr if x < pivot]middle = [x for x in arr if x == pivot]right = [x for x in arr if x > pivot]return quick_sort(left) + middle + quick_sort(right)# 示例arr = [3, 6, 8, 10, 1, 2, 1]sorted_arr = quick_sort(arr)print(sorted_arr)```通过以上复习题,可以对计算机算法的基本概念、原理和应用有一个全面的回顾和理解。

算法试题及答案

算法试题及答案

算法试题及答案一、选择题1. 以下哪个选项不是排序算法?A. 快速排序B. 归并排序C. 冒泡排序D. 深度优先搜索答案:D2. 在二叉树的遍历算法中,中序遍历的顺序是什么?A. 根-左-右B. 左-根-右C. 右-根-左D. 根-右-左答案:B二、填空题1. 在图论中,一个图中的顶点数为n,边数为m,那么这个图的邻接矩阵的维度是________。

答案:n×n2. 动态规划算法的核心是________。

答案:最优子结构三、简答题1. 请简述贪心算法和动态规划算法的区别。

答案:贪心算法在每一步选择局部最优解,而不考虑全局最优解;动态规划算法则是将问题分解成子问题,通过求解子问题的最优解来构建原问题的最优解。

2. 什么是分治算法?请举例说明。

答案:分治算法是一种递归算法,它将问题分解成更小的子问题,递归求解子问题,然后将子问题的解合并以得到原问题的解。

例如,快速排序就是一种分治算法,它通过选择一个基准值,将数组分成两部分,一部分比基准值小,另一部分比基准值大,然后递归地对这两部分进行快速排序。

四、编程题1. 编写一个函数,实现字符串的反转。

答案:```pythondef reverse_string(s):return s[::-1]```2. 给定一个整数数组,请编写一个函数,找出数组中第二大的数。

答案:```pythondef find_second_max(nums):first_max = second_max = float('-inf')for num in nums:if num > first_max:second_max = first_maxfirst_max = numelif num > second_max and num != first_max:second_max = numreturn second_max```。

算法大题期末考试题及答案

算法大题期末考试题及答案

算法大题期末考试题及答案一、简答题(每题5分,共20分)1. 简述什么是递归算法,并给出一个递归算法的实例。

答案:递归算法是一种在算法中使用函数调用自身的方法来解决问题的算法。

例如,计算阶乘的递归算法定义为:n! = n * (n-1)!,其中n是一个正整数,递归的基本情况是1! = 1。

2. 描述二分查找算法的基本思想,并说明其时间复杂度。

答案:二分查找算法是一种在有序数组中查找特定元素的算法。

其基本思想是将数组分为两半,比较中间元素与目标值,如果目标值等于中间元素,则查找成功;如果目标值小于中间元素,则在左半部分继续查找;如果目标值大于中间元素,则在右半部分继续查找。

这个过程重复进行,直到找到目标值或查找范围为空。

二分查找的时间复杂度为O(log n)。

3. 什么是动态规划?动态规划与贪心算法的区别是什么?答案:动态规划是一种通过将复杂问题分解为更小的子问题来解决的方法,并且通过存储这些子问题的解来避免重复计算。

动态规划与贪心算法的区别在于,贪心算法在每一步选择局部最优解,而动态规划则考虑所有可能的子问题解,并选择全局最优解。

4. 解释什么是哈希表,并简述其工作原理。

答案:哈希表是一种数据结构,它提供了快速的数据插入和查找功能。

哈希表通过哈希函数将键映射到表中的一个位置来访问记录,这个通过键到位置的映射过程称为哈希。

如果两个键具有相同的哈希值,这种情况称为冲突,通常通过链地址法或开放地址法来解决。

二、计算题(每题10分,共20分)1. 给定一个数组A=[3, 5, 7, 9, 11],请使用二分查找算法找出11的位置。

答案:首先,确定数组的中间位置,即(0+4)/2=2,比较A[2]与11,发现A[2]=7小于11,因此11在A[2]的右侧。

更新查找范围为A[3]到A[4],即索引3和4。

继续比较A[3]与11,发现A[3]=9小于11,因此11在A[3]的右侧。

最后,比较A[4]与11,发现A[4]=11等于目标值,所以11的位置是4。

算法复习题

算法复习题

一、单项选择题1、衡量一个算法好坏的标准是()A.运行速度快 B.占用空间少 C.时间复杂度低 D.代码短2、选择排序算法的时间复杂度是()A.O(n2) B.O(nlogn) C.O(22) D.O(n)3、快速排序算法的平均时间复杂度是()A.O(n2) B.O(nlogn) C.O(22) D.O(n)4、快速排序算法是利用()实现的算法A.分治策略 B.动态规划法 C.贪心法 D.回溯法5、实现合并排序利用的算法是()A.分治策略 B. 动态规划法 C.贪心法 D.回溯法6、实现棋盘覆盖算法利用的算法是()A.分治策略 B. 动态规划法 C.贪心法 D.回溯法7、下列算法中通常以自底向上的方式求解最优解的是()A.备忘录法 B. 动态规划法 C.贪心法 D.回溯法8、最长公共子序列利用的算法是()A.分治策略 B. 动态规划法 C.贪心法 D.回溯法9、以下不可以使用分治法求解的是()A.棋盘覆盖问题 B.选择问题 C.归并排序 D.0/1背包问题10、下列算法不能解决0/1背包问题的是()A.贪心法 B.动态规划法 C.回溯法 D.分支限界法11、下面问题()不能使用贪心法解决。

A.单源最短路径问题 B.N皇后问题C.最小花费生成树问题 D.背包问题12、()是贪心算法与动态规划算法的共同点A.重叠自问题 B.构造最优解 C.贪心选择性质 D.最优子结构性质13、蛮力法所依赖的基本技术是()A.扫描技术 B.查找技术 C.分治技术 D.动态规划14、回溯法解旅行售货员问题时的解空间树是()A.子集树 B.排列树 C.深度优先生成树 D.广度优先生成树15、下列算法中通常以深度优先方式系统搜索问题的解是()A.备忘录法 B. 动态规划法 C.贪心法 D.回溯法16、.采用广度优先策略搜索的算法是()A.分支限界法B.动态规划法C.贪心法D.回溯法17、优先队列式分支限界法选取扩展结点的原则是()A.先进先出 B.后进后出 C.结点的优先级 D.随机18、回溯法的效率不依赖于下列哪些因素()A.满足显约束的值的个数B.计算约束函数的时间C.计算限界函数的时间D.确定解空间的时间19、下面哪种函数是回溯法中为避免无效搜索采取的策略()A.递归函数B.剪枝函数C. 随机数函数D.搜索函数20、下设函数f(n)和g(n)是定义在非负整数集合上的正函数,如果存在两个正常数c和n0,使得当n ≥n0时,有f (n )≤cg (n ),则记作()A .f (n )=O (g (n )) B.f (n )=Ω(g (n ))C.f (n )=⊙(g (n ))D.f(n)~g(n)21、下设函数f (n )和g (n )是定义在非负整数集合上的正函数,如果存在两个正常数c 和n0,使得当n ≥n0时,有f (n )≥cg (n ),则记作()A .f (n )=O (g (n )) B.f (n )=Ω(g (n ))C.f (n )=⊙(g (n ))D.f(n)~g(n)22、下面关于NP 问题说法正确的是()A .NP 问题都是不可能解决的问题B .P 类问题包含在NP 类问题中C .NP 完全问题是P 类问题的子类D .NP 类问题包含在P 类问题中23、下列哪些问题是典型的NP 完全问题()A .排序问题 B.N -后问题 C.0-1背包问题 D.旅行商问题24、下列哪个问题不是NP 完全问题()A .图着色问题 B.TSP 问题 C.哈密尔顿回路问题 D.最小生成树问题二、填空题1、算法的复杂性有___时间复杂性___和空间复杂性之分。

(完整)算法分析复习题目及答案

(完整)算法分析复习题目及答案

一。

选择题1、二分搜索算法是利用( A )实现的算法。

A、分治策略B、动态规划法C、贪心法D、回溯法2、下列不是动态规划算法基本步骤的是( A ).A、找出最优解的性质B、构造最优解C、算出最优解D、定义最优解3、最大效益优先是( A )的一搜索方式。

A、分支界限法B、动态规划法C、贪心法D、回溯法4、在下列算法中有时找不到问题解的是( B )。

A、蒙特卡罗算法B、拉斯维加斯算法C、舍伍德算法D、数值概率算法5. 回溯法解旅行售货员问题时的解空间树是(B )。

A、子集树B、排列树C、深度优先生成树D、广度优先生成树6.下列算法中通常以自底向上的方式求解最优解的是( B )。

A、备忘录法B、动态规划法C、贪心法D、回溯法7、衡量一个算法好坏的标准是(C )。

A 运行速度快B 占用空间少C 时间复杂度低D 代码短8、以下不可以使用分治法求解的是(D )。

A 棋盘覆盖问题B 选择问题C 归并排序D 0/1背包问题9。

实现循环赛日程表利用的算法是( A )。

A、分治策略B、动态规划法C、贪心法D、回溯法10、下列随机算法中运行时有时候成功有时候失败的是(C )A 数值概率算法B 舍伍德算法C 拉斯维加斯算法D 蒙特卡罗算法11.下面不是分支界限法搜索方式的是( D )。

A、广度优先B、最小耗费优先C、最大效益优先D、深度优先12.下列算法中通常以深度优先方式系统搜索问题解的是( D )。

A、备忘录法B、动态规划法C、贪心法D、回溯法13。

备忘录方法是那种算法的变形.( B )A、分治法B、动态规划法C、贪心法D、回溯法14.哈弗曼编码的贪心算法所需的计算时间为( B ).A、O(n2n)B、O(nlogn)C、O(2n)D、O(n)15.分支限界法解最大团问题时,活结点表的组织形式是( B )。

A、最小堆B、最大堆C、栈D、数组16.最长公共子序列算法利用的算法是( B )。

A、分支界限法B、动态规划法C、贪心法D、回溯法17.实现棋盘覆盖算法利用的算法是( A )。

算法期末考试试卷

算法期末考试试卷

算法期末考试试卷一、选择题(每题2分,共20分)1. 在图论中,下列哪项不是图的基本术语?- A. 顶点- B. 边- C. 环- D. 矩阵2. 快速排序算法的平均时间复杂度是:- A. O(n)- B. O(n log n)- C. O(n^2)- D. O(log n)3. 哈希表解决冲突最常用的方法是:- A. 链地址法- B. 开放地址法- C. 再哈希法- D. 二次探测法4. 以下哪个是动态规划算法的典型问题?- A. 二分搜索- B. 快速排序- C. 背包问题- D. 归并排序5. 在算法分析中,最坏情况下的时间复杂度是指:- A. 平均时间复杂度- B. 最优时间复杂度- C. 所有可能输入的时间复杂度中的最大值 - D. 随机时间复杂度6. 递归算法的基本思想是:- A. 将问题分解为更小的子问题- B. 将问题转化为更简单的问题- C. 将问题转化为更复杂的问题- D. 将问题转化为多个问题7. 以下哪个是贪心算法不能解决的问题?- A. 单源最短路径问题- B. 活动选择问题- C. 背包问题- D. 旅行商问题8. 以下哪个排序算法是稳定的?- A. 快速排序- B. 堆排序- C. 归并排序- D. 冒泡排序9. 以下哪个是图的遍历算法?- A. 深度优先搜索(DFS)- B. 广度优先搜索(BFS)- C. 回溯算法- D. 动态规划10. 以下哪个是并查集算法的应用场景?- A. 最小生成树- B. 图的连通性- C. 单源最短路径- D. 动态规划二、简答题(每题10分,共30分)1. 简述二叉树的前序遍历、中序遍历和后序遍历的区别。

2. 描述动态规划和贪心算法的区别,并给出一个例子。

3. 解释什么是时间复杂度,并说明为什么在算法设计中考虑时间复杂度很重要。

三、编程题(每题25分,共50分)1. 编写一个函数,实现快速排序算法,并用一个数组测试你的函数。

2. 编写一个函数,实现Dijkstra算法,用于计算图中单源最短路径,并用一个图的示例来测试你的函数。

算法复习题选择题

算法复习题选择题

算法复习题选择题一、选择题1. 下列哪种排序算法具有最差时间复杂度为O(n^2)?A. 快速排序B. 归并排序C. 堆排序D. 冒泡排序答案:D. 冒泡排序解析:冒泡排序是一种简单直观的排序算法,它的基本思想是通过不断比较相邻的两个元素,将较大的元素向右移动,较小的元素向左移动,直到整个序列按照从小到大的顺序排列。

冒泡排序的最差时间复杂度为O(n^2),当待排序序列已经有序时,冒泡排序的最坏情况就会出现,需要进行n-1趟排序,每趟比较n-1次。

2. 下列哪种排序算法不属于比较排序?A. 计数排序B. 插入排序C. 选择排序D. 希尔排序答案:A. 计数排序解析:计数排序是一种非比较排序算法,它通过确定每个元素之前有多少个元素小于它来确定元素的位置。

计数排序的时间复杂度为O(n+k),其中n为待排序序列的长度,k为待排序序列中的最大值大小。

3. 下列哪个算法通常用来解决最短路径问题?A. Dijkstra算法B. Kruskal算法C. Prim算法D. Floyd-Warshall算法答案:A. Dijkstra算法解析:Dijkstra算法是一种用于求解单源最短路径问题的算法。

它基于贪心策略,通过选择当前最短路径上的顶点来逐步扩展最短路径树。

Dijkstra算法的时间复杂度为O(V^2),其中V为图的顶点数。

4. 下列哪种数据结构通常用于实现图的遍历?A. 队列B. 栈C. 链表D. 数组答案:B. 栈解析:图的遍历包括深度优先遍历和广度优先遍历两种方式。

其中,深度优先遍历(DFS)通常使用栈来实现,广度优先遍历(BFS)通常使用队列来实现。

栈是一种后进先出(LIFO)的数据结构,适合将深度优先遍历的节点存储起来。

5. 下列哪种查找算法具有最坏时间复杂度为O(log n)?A. 二分查找B. 线性查找C. 哈希查找D. 顺序查找答案:A. 二分查找解析:二分查找是一种基于分治思想的查找算法,它通过将查找区间逐步缩小为左右两个子区间,并与目标元素进行比较,从而确定目标元素的位置。

算法考试题及答案

算法考试题及答案

算法考试题及答案一、选择题(每题5分,共20分)1. 以下哪个算法的时间复杂度是O(n^2)?A. 冒泡排序B. 快速排序C. 二分查找D. 归并排序答案:A2. 在图的遍历中,深度优先搜索(DFS)使用的是哪种数据结构?A. 栈B. 队列C. 链表D. 哈希表答案:A3. 哈希表解决冲突的方法不包括以下哪种?A. 分离链接法B. 开放寻址法C. 链地址法D. 排序法答案:D4. 以下哪个算法不是动态规划算法?A. 斐波那契数列B. 0/1背包问题C. 最长公共子序列D. 二分查找答案:D二、填空题(每题5分,共20分)1. 在算法分析中,____复杂度表示算法执行时间与输入数据量的关系。

答案:时间2. 动态规划算法的核心是____问题,通过将问题分解为更小的子问题来解决。

答案:最优子结构3. 在排序算法中,____排序是一种不稳定的排序算法,它通过不断地交换相邻元素来达到排序的目的。

答案:冒泡4. 在图论中,____树是一种特殊的树,其中每个节点都只有一个父节点。

答案:二叉三、简答题(每题10分,共30分)1. 请简述贪心算法的基本思想。

答案:贪心算法的基本思想是在每一步选择中都采取在当前状态下最好或最优的选择,从而希望导致结果是全局最好或最优的算法。

贪心算法不保证能得到最优解,但在某些情况下它能产生近似最优解。

2. 什么是分治算法?请举例说明。

答案:分治算法是一种递归算法,它将一个难以直接解决的大问题分解成若干个规模较小的相同问题,递归解决这些子问题,然后再合并这些子问题的解以解决原始问题。

例如,归并排序就是分治算法的一个典型例子,它将一个数组分成两半,分别排序,然后再合并。

3. 请解释什么是时间复杂度,并给出一个例子。

答案:时间复杂度是衡量算法运行时间的量度,它描述了算法执行时间随输入数据规模增长的变化趋势。

例如,对于一个简单的线性搜索算法,其时间复杂度是O(n),意味着搜索的时间随着数据规模的增加而线性增长。

计算机算法与设计复习题(含答案)

计算机算法与设计复习题(含答案)

计算机算法与设计复习题(含答案)1、一个算法的优劣可以用(时间复杂度)与(空间复杂度)与来衡量。

2、回溯法在问题的解空间中,按(深度优先方式)从根结点出发搜索解空间树。

3、直接或间接地调用自身的算法称为(递归算法)。

4、记号在算法复杂性的表示法中表示(渐进确界或紧致界)。

5、在分治法中,使子问题规模大致相等的做法是出自一种(平衡(banlancing)子问题)的思想。

6、动态规划算法适用于解(具有某种最优性质)问题。

7、贪心算法做出的选择只是(在某种意义上的局部)最优选择。

8、最优子结构性质的含义是(问题的最优解包含其子问题的最优解)。

9、回溯法按(深度优先)策略从根结点出发搜索解空间树。

10、拉斯维加斯算法找到的解一定是(正确解)。

11、按照符号O的定义O(f)+O(g)等于O(max{f(n),g(n)})。

12、二分搜索技术是运用(分治)策略的典型例子。

13、动态规划算法中,通常不同子问题的个数随问题规模呈(多项式)级增长。

14、(最优子结构性质)和(子问题重叠性质)是采用动态规划算法的两个基本要素。

15、(最优子结构性质)和(贪心选择性质)是贪心算法的基本要素。

16、(选择能产生最优解的贪心准则)是设计贪心算法的核心问题。

17、分支限界法常以(广度优先)或(以最小耗费(最大效益)优先)的方式搜索问题的解空间树。

18、贪心选择性质是指所求问题的整体最优解可以通过一系列(局部最优)的选择,即贪心选择达到。

19、按照活结点表的组织方式的不同,分支限界法包括(队列式(FIFO)分支限界法)和(优先队列式分支限界法)两种形式。

20、如果对于同一实例,蒙特卡洛算法不会给出两个不同的正确解答,则称该蒙特卡洛算法是(一致的)。

21、哈夫曼编码可利用(贪心法)算法实现。

22概率算法有数值概率算法,蒙特卡罗(Monte Carlo)算法,拉斯维加斯(Las Vegas)算法和舍伍德(Sherwood)算法23以自顶向下的方式求解最优解的有(贪心算法)24、下列算法中通常以自顶向下的方式求解最优解的是(C)。

算法考试试题及答案

算法考试试题及答案

精品文档一、填空题(本题10 分,每空 1 分)1、算法的复杂性是的度量,是评价算法优劣的重要依据。

2、设 n 为正整数,利用大“O(·)”记号,将下列程序段的执行时间表示为n 的函数,则下面程序段的时间复杂度为。

i=1; k=0;while(i<n) { k=k+10*i;i++; }3、计算机的资源最重要的是和资源。

因而,算法的复杂性有和之分。

n24、 f(n)= 6 ×2+n,f(n) 的渐进性态 f(n)= O()5、递归是指函数或者通过一些语句调用自身。

6、分治法的基本思想是将一个规模为n 的问题分解为k 个规模较小的子问题,这些子问题互相且与原问题相同。

二、选择题(本题20 分,每小题2 分)1、分支限界法与回溯法都是在问题的解空间树T 上搜索问题的解 , 二者 () 。

A. 求解目标不同 , 搜索方式相同B.求解目标不同 , 搜索方式也不同C. 求解目标相同 , 搜索方式不同D.求解目标相同 , 搜索方式也相同2、回溯法在解空间树T 上的搜索方式是 ( )。

A. 深度优先B.广度优先C.最小耗费优先D.活结点优先3、在对问题的解空间树进行搜索的方法中, 一个活结点最多有一次机会成为活结点的是( ) 。

A. 回溯法B.分支限界法C.回溯法和分支限界法D. 回溯法求解子集树问题4、以下关于判定问题难易处理的叙述中正确的是( ) 。

A.可以由多项式时间算法求解的问题是难处理的B.需要超过多项式时间算法求解的问题是易处理的C.可以由多项式时间算法求解的问题是易处理的D.需要超过多项式时间算法求解的问题是不能处理的5、设 f(N),g(N) 是定义在正数集上的正函数, 如果存在正的常数 C 和自然数 N0,使得当 N≥N0时有 f(N) ≤Cg(N), 则称函数 f(N)当 N 充分大时有上界g(N), 记作 f(N)=O(g(N)),即 f(N) 的阶( )g(N) 的阶。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

填空题
动态规划算法的基本要素为:最优子结构性质与重叠子问题性质
1)算法分析中,记号O表示渐进上界,记号Ω表示渐进下界,记号Θ表示紧渐进界。

2)回溯法在问题的解空间树中,按深度优先策略,从根结点出发搜索解空间树。

3)分支限界法在问题的解空间树中,按广度优先策略,从根结点出发搜索解空间树。

所谓贪心选择性质是指(所求问题的整体最优解可以通过一系列局部最优的选择,即贪心选择来达到)。

4)
5)
6)
7)
8)
9)
10)
11)0-1
12)
13)
1.
2
3
4.
6
7
8、问题的最优子结构性质是该问题可用动态规划算法或贪心算法求解的关键特征。

9、以深度优先方式系统搜索问题解的算法称为回溯法。

10、数值概率算法常用于数值问题的求解。

15、使用回溯法进行状态空间树裁剪分支时一般有两个标准:约束条件和目标函数的界,N皇后问题和0/1背包问题正好是两种不同的类型,其中同时使用约束条件和目标函数的界进行裁剪的是
0/1背包问题,只使用约束条件进行裁剪的是N皇后问题。

16、贪心选择性质是贪心算法可行的第一个基本要素,也是贪心算法与动态规划算法的主要区别。

17、矩阵连乘问题的算法可由动态规划设计实现。

19.贪心算法的基本要素是贪心选择质和最优子结构性质。

21.动态规划算法的基本思想是将待求解问题分解成若干子问题,先求解子问题,然后从这些子问题的解得到原问题的解。

23、大整数乘积算法是用分治法来设计的。

26、贪心选择性质是贪心算法可行的第一个基本要素,也是贪心算法与动态规划算法的主要区别。

27.快速排序算法是基于分治策略的一种排序算法。

30.
33
34.
35.
37.图的
孩子数是
1.
17、
2.
{
{
}
for(l=0;l<=n-1;l++)//----l是下标j-i的差
for(i=1;i<=n-l;i++)
{
j=i+l;
w[i][j]=w[i][j-1]+a[j]+b[j];
m[i][j]=m[i][i-1]+m[i+1][j]+w[i][j];
s[i][j]=i;
for(k=i+1;k<=j;k++)
{
t=m[i][k-1]+m[k+1][j]+w[i][j];
if(t<m[i][j])
{
m[i][j]=t;
s[i][j]=k;
}
}
}
}
编写计算斐波那契(Fibonacci)数列的第n项函数fib(n)。

2.
3.
1、操作
4.算法具有以下5个属性:
有穷性:一个算法必须总是在执行有穷步之后结束,且每一步都在有穷时间内完成。

确定性:算法中每一条指令必须有确切的含义。

不存在二义性。

只有一个入口和一个出口可行性:一个算法是可行的就是算法描述的操作是可以通过已经实现的基本运算执行有限次来实现的。

输入:一个算法有零个或多个输入,这些输入取自于某个特定对象的集合。

输出:一个算法有一个或多个输出,这些输出同输入有着某些特定关系的量。

经常采用的算法主要有迭代法、分治法、贪婪法、动态规划法、回溯法、分支限界法
8.分治法的基本思想是:
将一个规模为n的问题分解为k个规模较小的子问题,这些子问题互相独立且与原问题相同。

递归地解这些子问题,然后将各个子问题的解合并得到原问题的解。

9.分治法所能解决的问题一般具有以下几个特征:
(1)该问题的规模缩小到一定的程度就可以容易地解决;
(2
(3
(4
10
(1
(2
(3
11.
13.
14.
?????
某种顺序逐一枚举和检验。

当发现当前候选解不可能是解时,就选择下一个候选解;倘若当前候选解除了还不满足问题规模要求外,满足所有其他要求时,继续扩大当前候选解的规模,并继续试探。

如果当前候选解满足包括问题规模在内的所有要求时,该候选解就是问题的一个解。

在回溯法中,放弃当前候选解,寻找下一个候选解的过程称为回溯。

扩大当前候选解的规模,以继续试探的过程称为向前试探。

20.回溯法中常见的两类典型的解空间树是子集树和排列树。

当所给的问题是从n个元素的集合S中找出满足某种性质的子集时,相应的解空间树称为子集树。

这类子集树通常有2n个叶结点,遍历子集树需O(2n)计算时间。

当所给的问题是确定n个元素满足某种性质的排列时,相应的解空间树称为排列树。

这类排列树通常有n!个叶结点。

遍历排列树需要O(n!)计算时间。

答:
如果存在两个正常数c和N0,对于所有的N≥N0,有|f(N)|≤C|g(N)|,则记作:f(N)=O(g(N))。

这时我们说f(N)的阶不高于g(N)的阶。

若存在两个正常数C和自然数N0,使得当N≥N0时有|f(N)|≥C|g(N)|,记为f(N)=?(g(N))。

这时我们说f(N)的阶不低于g(N)的阶。

如果存在正常数c1,c2和n0,对于所有的n≥n0,有c1|g(N)|≤|f(N)|≤c2|g(N)|
则记作f(N)=(g,(N))
O、Ω、Θ分别提供了算法运行时间的上界、下界、平均
1.用动态规划策略求解最长公共子序列问题:
(1)给出计算最优值的递归方程。

(2)给定两个序列X={B,C,D,A},Y={A,B,C,B},请采用动态规划策略求出其最长公共子序列,要求给出过程。

答:
(1)
(2)





2,并简要
答:
(1)f(n)=O(g(n))因为g(n)的阶比f(n)的阶高。

(2)f(n)=Ω(g(n))因为g(n)的阶比f(n)的阶低。

(3)f(n)=θ(g(n))因为g(n)与f(n)同阶。

(4)f(n)=O(g(n))因为g(n)的阶比f(n)的阶高。

(5)f(n)=Ω(g(n))因为g(n)的阶比f(n)的阶低。

3.对下图所示的连通网络G ,用克鲁斯卡尔(Kruskal)算法求G 的最小生成树T ,请写出在算法执行过程中,依次加入T 的边集TE 中的边。

说明该算法的贪心策略和算法的基本思想,并简要分析算法的时间复杂度。

答:
4.conquer 、combine 阶)。

答:{inti=(}
}
Divide 阶段的时间复杂性:O(1) Conquer 阶段的时间复杂性:2T(n) Combine 阶段的时间复杂性:Θ(n)
用套用公式法:a=2,b=2,n log b a =n,f(n)=n,因为f(n)与n log b a 同阶,
7
∴T(n)=Θ(nlogn)
7.考虑在序列A[1..n]中找最大最小元素的问题。

一个分治算法描述如下:如果n≤2就直接求解。

否则,将序列等分成两个子序列A[1..n/2]和A[n/2+1..n],分别找出这两子序列的最大最小元素
x1,y1和x2,y2;然后据此求出A[1..n]的最大元素x=max{x1,x2}及最小元素y=min{y1,y2}。

请给出该算法计算时间T(n)满足的递归方程,并解方程来确定算法的时间复杂度。

假定n=2k(k为正整数)。

答:
算法时间复杂度满足如下递归方程:
T(n)=2T(
因为n=2k
T(n)=T(2
?
=2k-1
=2k-1+?+23
8.
01
V(0,j)=0(0个物品),V(i,0)=0(承重量0)
V(i,j)=V(i-1,j)第i个物品不能装入,j<wi(超重)
V(i,j)=max{,}j>wi(不超重)
i在最优子集中i不在最优子集中
自底向上:按行或列填写下表。

答:
V(0,j)=0(0个物品),V(i,0)=0(承重量0)
V(i,j)=V(i-1,j)第i个物品不能装入,j<wi(超重)
V(i,j)=max{v
i +V(i-1,j-w
j
),V(i-1,j)}j>wi(不超重)
i
9.
用回溯法
11
答:
解空间树:2 0 10 12 22 22 22
3 0 10 12 22 30 32
4 0 10 1
5 25 30 37。

相关文档
最新文档