算法期末复习题final

合集下载

算法期末考试试题

算法期末考试试题

算法期末考试试题### 算法期末考试试题#### 一、选择题(每题2分,共20分)1. 在排序算法中,时间复杂度为O(n^2)的算法是:A. 快速排序B. 归并排序C. 堆排序D. 冒泡排序2. 哈希表的冲突解决方法不包括:A. 开放寻址法B. 线性探测法C. 链地址法D. 二分查找法3. 下列哪个是图的遍历算法:A. 深度优先搜索(DFS)B. 广度优先搜索(BFS)C. 快速排序D. 所有选项都是4. 在动态规划问题中,状态转移方程的作用是:A. 确定问题的最优解B. 描述问题的状态C. 将问题分解为子问题D. 计算子问题的解5. 以下不是贪心算法的应用场景的是:A. 霍夫曼编码B. 最小生成树C. 动态规划D. 活动选择问题#### 二、简答题(每题10分,共30分)1. 解释什么是二叉搜索树,并简述其基本操作。

2. 描述快速排序算法的工作原理,并讨论其最坏情况和平均情况的时间复杂度。

3. 什么是Kruskal算法?它在最小生成树问题中是如何工作的?#### 三、计算题(每题15分,共30分)1. 给定一个数组A = [3, 7, 1, 5, 2, 8, 4],请使用归并排序算法对其进行排序,并展示排序过程中的每一步。

2. 假设有一个图G,包含顶点集合V = {A, B, C, D, E}和边集合E = {(A, B), (A, C), (B, C), (C, D), (D, E), (E, B)},使用Kruskal 算法找出该图的最小生成树,并计算其总权重。

#### 四、编程题(每题20分,共20分)编写一个Python函数,实现Dijkstra算法,用于在带权图中找到从源点到所有其他顶点的最短路径。

函数应该接受图的邻接矩阵作为输入,并返回源点到每个顶点的最短路径长度。

```pythondef dijkstra(graph, source):# 你的代码pass```请注意,本试题仅供学习和练习使用,实际考试内容和形式可能有所不同。

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

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

算法基础期末考试题及答案一、选择题(每题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)实现的算法。

算法期末考试题及答案

算法期末考试题及答案

算法期末考试题及答案一、选择题(每题2分,共20分)1. 以下哪个算法不是排序算法?A. 快速排序B. 归并排序C. 深度优先搜索D. 堆排序答案:C2. 在二叉树的遍历算法中,中序遍历的顺序是:A. 先序B. 后序C. 中序D. 层序答案:C3. 动态规划与分治法算法的主要区别在于:A. 问题分解的方式B. 问题解决的顺序C. 存储中间结果的方式D. 问题规模的大小答案:C4. 哈希表的冲突解决方法不包括:A. 开放寻址法B. 链地址法C. 线性探测法D. 排序答案:D5. 以下哪个是图的遍历算法?A. 归并排序B. 深度优先搜索C. 快速排序D. 堆排序答案:B6. 贪心算法的特点是:A. 每一步都选择最优解B. 每一步都选择局部最优解C. 每一步都选择最差解D. 每一步都随机选择解答案:B7. 在算法分析中,时间复杂度O(1)表示:A. 常数时间B. 线性时间C. 对数时间D. 多项式时间答案:A8. 以下哪个是排序算法的时间复杂度为O(n^2)?A. 快速排序B. 归并排序C. 冒泡排序D. 堆排序答案:C9. 递归算法的基本原理是:A. 重复执行B. 分而治之C. 循环调用D. 迭代求解答案:B10. 以下哪个是算法的时间复杂度为O(log n)的典型例子?A. 二分查找B. 线性查找C. 冒泡排序D. 快速排序答案:A二、简答题(每题10分,共20分)1. 简述快速排序算法的基本思想及其时间复杂度。

答案:快速排序是一种分治法的排序算法。

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

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

之后,递归地对这两部分进行快速排序。

快速排序的平均时间复杂度为O(n log n),但在最坏情况下(例如数组已经排序或所有元素相等)时间复杂度为O(n^2)。

2. 解释什么是动态规划,并给出一个动态规划问题的例子。

《算法分析与设计》期末考试复习题纲(完整版)

《算法分析与设计》期末考试复习题纲(完整版)

《算法分析与设计》期末复习题一、选择题1.算法必须具备输入、输出和( D )等4个特性。

A.可行性和安全性 B.确定性和易读性C.有穷性和安全性 D.有穷性和确定性2.算法分析中,记号O表示( B ),记号Ω表示( A )A.渐进下界B.渐进上界C.非紧上界D.紧渐进界3.假设某算法在输入规模为n时的计算时间为T(n)=3*2^n。

在某台计算机上实现并完成概算法的时间为t秒。

现有另一台计算机,其运行速度为第一台的64倍,那么在这台新机器上用同一算法在t秒内能解输入规模为多大的问题?( B )解题方法:3*2^n*64=3*2^xA.n+8 B.n+6C.n+7 D.n+54.设问题规模为N时,某递归算法的时间复杂度记为T(N),已知T(1)=1,T(N)=2T(N/2)+N/2,用O表示的时间复杂度为( C )。

A.O(logN) B.O(N)C.O(NlogN) D.O(N²logN)5.直接或间接调用自身的算法称为( B )。

A.贪心算法 B.递归算法C.迭代算法 D.回溯法6.Fibonacci数列中,第4个和第11个数分别是( D )。

A.5,89 B.3,89C.5,144 D.3,1447.在有8个顶点的凸多边形的三角剖分中,恰有( B )。

A.6条弦和7个三角形 B.5条弦和6个三角形C.6条弦和6个三角形 D.5条弦和5个三角形8.一个问题可用动态规划算法或贪心算法求解的关键特征是问题的( B )。

A.重叠子问题 B.最优子结构性质C.贪心选择性质 D.定义最优解9.下列哪个问题不用贪心法求解( C )。

A.哈夫曼编码问题 B.单源最短路径问题C.最大团问题 D.最小生成树问题10.下列算法中通常以自底向上的方式求解最优解的是( B )。

A.备忘录法 B.动态规划法C.贪心法 D.回溯法11.下列算法中不能解决0/1背包问题的是( A )。

A.贪心法 B.动态规划C.回溯法 D.分支限界法12.下列哪个问题可以用贪心算法求解( D )。

算法期末复习题2

算法期末复习题2

填空题:1.一个算法就是一个有穷规则的集合,其中之规则规定了解决某一特殊类型问题的一系列运算,此外,算法还应具有以下五个重要特性:确定性有穷性可行性 0个或多个输入一个或多个输出2.算法的复杂性有时间复杂性和空间复杂性之分,衡量一个算法好坏的标准是时间复杂度高低。

3.某一问题可用动态规划算法求解的显著特征是该问题具有最优子结构性质。

5.用回溯法解问题时,应明确定义问题的解空间,问题的解空间至少应包含一个(最优)解6.动态规划算法的基本思想是将待求解问题分解成若干子问题_,先求解子问题,然后从这些子问题的解得到原问题的解。

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

8.0-1背包问题的回溯算法所需的计算时间为o(n*2n),用动态规划算法所需的计算时间为o(min{nc,2n})。

9.动态规划算法的两个基本要素是最优子结构和重叠子问题。

10.二分搜索算法是利用动态规划法实现的算法。

11.一个算法复杂性的高低体现在计算机运行该算法所需的时间和存储器资源上,因此算法的复杂性有时间复杂性和空间复杂性之分。

12.出自于“平衡子问题”的思想,通常分治法在分割原问题,形成若干子问题时,这些子问题的规模都大致相同。

13.动态规划算法有一个变形方法备忘录方法。

这种方法不同于动态规划算法“自底向上”的填充方向,而是“自顶向下”的递归方向,为每个解过的子问题建立了备忘录以备需要时查看,同样也可避免相同子问题的重复求解。

14、这种不断回头寻找目标的方法称为回溯法。

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

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

17、由分治法产生的子问题往往是原问题的较小模式,这就为使用递归技术提供了方便。

18、建立计算模型的目的是为了使问题的计算复杂性分析有一个共同的客观尺度。

19、下列各步骤的先后顺序是②③④①。

①调试程序②分析问题③设计算法④编写程序。

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

算法设计与分析期末复习题

算法设计与分析期末复习题

算法设计与分析期末考试复习题1.算法有哪些特点?为什么说一个具备了所有特征的算法,不一定就是使用的算法?2.证明下面的关系成立:(参考例题1.5--1.6)(1)logn!=Θ(nlogn) (2)2n=Θ(2n+1)(3)n!=Θ(n n) (4)5n2-6n=Θ(n2)3.考虑下面的算法:输入:n个元素的数组A输出:按递增顺序排序的数组A1. void sort(int A[],int n)2. {3. int i,j,temp;4. for(i=0;i<n-1;i++)5. for(j=i+1;j<n;j++)6. if(A[j]<A[i]) {7. temp=A[i];8. A[i]=A[j];9. A[j]=temp;10. }11. }(1)什么时候算法所执行的元素赋值的次数最少?最少多少次?(2)什么时候算法所执行的元素赋值的次数最多?最多多少次?4.考虑下面的算法:输入:n个元素的数组A输出:按递增顺序排序的数组A1. void bubblesort(int A[],int n)2. {3. int j,i,sorted;4. i=sorted=0;5. while(i<n-1 && !sorted) {6. sorted=1;7. for(j=n-1;j>i;j--) {8. if(A[j]<A[j-1]) {9. temp=A[j];10. A[j]=A[j-1];11. A[j-1]=temp;12. sorted=0;13. }14. }15. i=i+1;16. }17. }(1)算法所执行的元素比较次数最少是多少次?什么时候达到最少?(2)算法所执行的元素比较次数最多是多少次?什么时候达到最多?(3)算法所执行的元素赋值次数最少是多少次?什么时候达到最少?(4)算法所执行的元素赋值次数最多是多少次?什么时候达到最多?(5)用О、和Ω记号表示算法的运行时间。

算法期末复习-仅供参考

算法期末复习-仅供参考

1.算法基础算法复杂度的度量1)改进算法和提高计算机处理能力对算法速度的影响(课堂上讲过相关提高算法效率的实例)2)渐进意义下,算法的复杂度的同阶度量:()()()NgONf=的定义,以及O的运算性质证明。

3)给出一个表达式,证明2n是622++nn的上界下面的讨论中,对所有n,f(n) ≥ 0,g(n) ≥ 0。

渐近上界记号OO(g(n))={ f(n) | 存在正常数c和n0使得对所有n≥ n0有:0 ≤ f(n) ≤ cg(n) }渐近下界记号ΩΩ (g(n))={ f(n) | 存在正常数c和n0使得对所有n≥ n0有:0≤ cg(n) ≤ f(n) }非紧上界记号oo(g(n))={ f(n) | 对于任何正常数c>0,存在正数n0 >0使得对所有n≥n0有:0 ≤f(n)<cg(n) }等价于f(n) / g(n) →0 ,as n→∞。

非紧下界记号ωω (g(n)) = { f(n) | 对于任何正常数c>0,存在正数n0 >0使得对所有n≥n0有:0 ≤cg(n) < f(n) }等价于f(n) / g(n) →∞,as n→∞。

f(n) ∈ω (g(n)) ⇔g(n) ∈o (f(n))紧渐近界记号ΘΘ (g(n)) = { f(n) | 存在正常数c1, c2和n0使得对所有n≥n0有:c1g(n) ≤f(n) ≤c2g(n) }2.递归与分治策略分治法的设计思想、递归的实质、排列问题、整数划分问题、二分搜索、大数乘法、strassen矩阵乘、棋盘覆盖、合并排序、快速排序、线性时间选择(寻找中位数)、最近点对问题、循环赛日程安排问题。

例:分析二分搜索的时间复杂性,改写二分搜索算法使得搜索元素x不在数组中时,返回小于x的最大元素位置i和大于x的最小元素位置j。

如搜索元素在数组中,i和j相同,均为x在数组中的位置。

分治法的设计思想是:将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。

算法设计期末试卷及答案

算法设计期末试卷及答案

一.简述递归动态规划算法的基本步骤,以及动态规划算法与分治法的异同。

设计动态规划算法的主要步骤为:(最长公共子串,0/1背包)(1)找出最优解的性质,并刻划其结构特征。

(2)递归地定义最优值。

(3)以自底向上的方式计算出最优值。

(4)根据计算最优值时得到的信息,构造最优解分治法与动态规划法的相同点是:将待求解的问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。

两者的不同点是:适合于用动态规划法求解的问题,经分解得到的子问题往往不是互相独立的。

而用分治法求解的问题,经分解得到的子问题往往是互相独立的。

二.分治法在每一层递归上都有三个步骤:(汉诺塔问题)1.分解:将原问题分解为若干个规模较小,相互独立,与原问题形式相同的子问题;2.解决:若子问题规模较小而容易被解决则直接解,否则递归地解各个子问题;3.合并:将各个子问题的解合并为原问题的解。

它的一般的算法设计模式如下:Divide-and-Conquer(P)1. if |P|≤n02. then return(ADHOC(P))3. 将P分解为较小的子问题P1 ,P2 ,...,Pk4. for i←1 to k5. do yi ←Divide-and-Conquer(Pi) △递归解决Pi6. T ←MERGE(y1,y2,...,yk) △合并子问题7. return(T)三.分支限界法的搜索策略:(0/1背包,旅行售货员)在当前节点(扩展节点)处,先生成其所有的儿子节点(分支),然后再从当前的活节点(当前节点的子节点)表中选择下一个扩展节点。

为了有效地选择下一个扩展节点,加速搜索的进程,在每一个活节点处,计算一个函数值(限界),并根据函数值,从当前活节点表中选择一个最有利的节点作为扩展节点,使搜索朝着解空间上有最优解的分支推进,以便尽快地找出一个最优解。

分支限界法解决了大量离散最优化的问题。

四.回溯法一般步骤:()(1)针对所给问题,定义问题的解空间;(2)确定易于搜索的解空间结构;(3)以深度优先方式搜索解空间,并在搜索过程中用剪枝函数避免无效搜索。

2009年算法试题及参考答案_final

2009年算法试题及参考答案_final

2009年算法试题及参考答案声明:本参考答案纯属“参考”,并不一定是正确答案对本答案的错误造成的考试挂科等情况请自负责任1) 各种函数的阶进行排序解:指数级:n!,n*2^n ,n^loglogn = (logn)^logn多项式级:2^(logn^2) = n^2,3^logn = n^log3,nlogn = log(n!),sqrt(2)^logn = n^0.5 更低级别:sigma(1/k) = ln(n),lnln(n)(大小顺序从上往下从左往右依次递减)2) 求解递推方程:T(n) = 4T(n/2) + n^2*logn解:画出递归树如下图所示:第一层复杂度为n^2logn ,第二层为n^2logn/2,依次递减。

总复杂度为: n^2*(logn + logn/2 + logn/4 … + log1)= n^2(logn + logn + logn … + logn – log2 – log4 – log8 …. - logn)= n^2(logn*logn- (1+2+3+4…+logn))= n^2((logn)^2 –logn*(logn+1)/2))=n^2(logn*(logn-(logn+1)/2))=n^2(logn*(logn-1)/2)=O(n 2log 2n)注:有一个版本的题目说是T(n) = 4T(n/2) + n 2log 2n ,方法类似,答案是O(n 2log 3n),注意这里要用到log 2n+log 2n/2 + log 2n/4 … = log 2n + (logn - 1)2 + (logn - 2)2 + … = (logn * (logn+1) * (2logn + 1)) / 6 ,也就是12+22+32+…的那个公式,然后可以说明这个是O(log 3n)级别的,所以最后复杂度是O(n 2log 3n)。

3) 设A ,B 是长为n 的数表,已经按照非降序顺序排好。

计算机算法设计与分析期末试题4套(含答案)

计算机算法设计与分析期末试题4套(含答案)

(1)用计算机求解问题的步骤:1、问题分析2、数学模型建立3、算法设计与选择4、算法指标5、算法分析6、算法实现7、程序调试8、结果整理文档编制(2)算法定义:算法是指在解决问题时,按照某种机械步骤一定可以得到问题结果的处理过程(3)算法的三要素1、操作2、控制结构3、数据结构算法具有以下5个属性:有穷性:一个算法必须总是在执行有穷步之后结束,且每一步都在有穷时间内完成。

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

不存在二义性。

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

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

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

算法设计的质量指标:正确性:算法应满足具体问题的需求;可读性:算法应该好读,以有利于读者对程序的理解;健壮性:算法应具有容错处理,当输入为非法数据时,算法应对其作出反应,而不是产生莫名其妙的输出结果。

效率与存储量需求:效率指的是算法执行的时间;存储量需求指算法执行过程中所需要的最大存储空间。

一般这两者与问题的规模有关。

经常采用的算法主要有迭代法、分而治之法、贪婪法、动态规划法、回溯法、分支限界法迭代法也称“辗转法”,是一种不断用变量的旧值递推出新值的解决问题的方法。

利用迭代算法解决问题,需要做好以下三个方面的工作:一、确定迭代模型。

在可以用迭代算法解决的问题中,至少存在一个直接或间接地不断由旧值递推出新值的变量,这个变量就是迭代变量。

二、建立迭代关系式。

所谓迭代关系式,指如何从变量的前一个值推出其下一个值的公式(或关系)。

迭代关系式的建立是解决迭代问题的关键,通常可以使用递推或倒推的方法来完成。

三、对迭代过程进行控制。

在什么时候结束迭代过程?这是编写迭代程序必须考虑的问题。

不能让迭代过程无休止地重复执行下去。

迭代过程的控制通常可分为两种情况:一种是所需的迭代次数是个确定的值,可以计算出来;另一种是所需的迭代次数无法确定。

算法期末考试练习题!!!

算法期末考试练习题!!!

算法期末考试练习题博主内推:⼀、选择题1.算法分析中,记号O表⽰(B),记号Ω标售(A),记号Θ表⽰(D)A 渐进下界B 渐进上界C ⾮紧上界D 紧渐进界E ⾮紧下界2.以下关于渐进记号的性质是正确的有:(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))3. 记号O的定义正确的是(A)。

A O(g(n)) = { f(n) | 存在正常数c和n0使得对所有n≥n0有:0≤ f(n) ≤ cg(n) };B O(g(n)) = { f(n) | 存在正常数c和n0使得对所有n≥n0有:0≤ cg(n) ≤ f(n) };C O(g(n)) = { f(n) | 对于任何正常数c>0,存在正数和n0 >0使得对所有n≥n0有:0 ≤f(n)<cg(n) };D O(g(n)) = { f(n) | 对于任何正常数c>0,存在正数和n0 >0使得对所有n≥n0有:0 ≤cg(n) < f(n) };4. 记号Ω的定义正确的是(B)。

A O(g(n)) = { f(n) | 存在正常数c和n0使得对所有n≥n0有:0≤ f(n) ≤ cg(n) };B O(g(n)) = { f(n) | 存在正常数c和n0使得对所有n≥n0有:0≤ cg(n) ≤ f(n) };C (g(n)) = { f(n) | 对于任何正常数c>0,存在正数和n0 >0使得对所有n≥n0有:0 ≤f(n)<cg(n) };D (g(n)) = { f(n) | 对于任何正常数c>0,存在正数和n0 >0使得对所有n≥n0有:0 ≤cg(n) < f(n) };5. T(n)表⽰当输⼊规模为n时的算法效率,以下算法效率最优的是( C )A T(n)= T(n – 1)+1,T(1)=1B T(n)= 2n2C T(n)= T(n/2)+1,T(1)=1D T(n)= 3nlog2n6. 动态规划算法的基本要素为(C)A 最优⼦结构性质与贪⼼选择性质B 重叠⼦问题性质与贪⼼选择性质C 最优⼦结构性质与重叠⼦问题性质D 预排序与递归调⽤7.下列不是动态规划算法基本步骤的是( A )。

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

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

算法大题期末考试题及答案一、简答题(每题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。

算法期末复习题final

算法期末复习题final

算法分析与设计期末复习题目一. 选择题1 -下列算法中通常以自底向上的方式求解最优解的是)oA 、备忘录法 B.动态规划法 C.贪心法 D.回溯法2、衡量一个算法好坏的标准是(C )。

A 运行速度快B 占用空间少C 时间复杂度低D 代码短 3、以下不可以使用分治法求解的是(D )o7>下列不属于影响程序执行时间的因素有哪些(C )A.算法设计的策略 B •问题的规模C.编译程序产生的机器代码质量D.计算机执行指令的速度8、使用分治法求解不需要满足的条件是(A )。

A 子问题必须是一样的 B 子问题不能够重复 C 子问题的解可以合并D 原问题和子问题使用相同的方法解 9、 下面问题(B )不能使用贪心法解决。

A 单源最短路径问题B N 皇后问题A 棋盘覆盖问题B 选择问题C 归并排序D 0/1背包问题4. 下列是动态规划算法基本要素的是( A 、定义最优解B 、构造最优解题重叠性质5. 采用广度优先策略搜索的算法是( A 、分支界限法B 、动态规划法法6. 合并排序算法是利用( AC.算出最优解 ♦子问A )oC >贪心法D 、回溯)实现的算法。

A 、分治策略B 、动态规划法C >贪心法D 、回溯法C最小花费生成树问题D背包问题10.一个问题可用动态规划算法或贪心算法求解的关键特征是问题的( B )•A、重叠子问题B、最优子结构性质C、贪心选择性质D、定义最优解11.以深度优先方式系统搜索问题解的算法称为( D ) 。

A、分支界限算法B、概率算法C、贪心算法D、回溯算法12.实现最长公共子序列利用的算法是(B)。

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

高级算法期末试题题库及答案

高级算法期末试题题库及答案

高级算法期末试题题库及答案一、选择题1. 下列哪种算法可以高效地解决最短路径问题?A. 深度优先搜索B. 广度优先搜索C. 贪心算法D. 动态规划答案:D. 动态规划2. 快速排序采用了哪种分治策略?A. 分而治之B. 合并策略C. 分割策略D. 选择策略答案:C. 分割策略3. 在一个有向无环图中,拓扑排序用于解决什么问题?A. 最短路径问题B. 最长路径问题C. 拓扑结构问题D. 线性排序问题答案:D. 线性排序问题4. 迭代加深搜索是一种针对何种问题的搜索方法?A. 最短路径问题B. 最长路径问题C. 博弈树问题D. 图遍历问题答案:C. 博弈树问题5. 哈夫曼编码主要用于解决什么问题?A. 字符串匹配问题B. 编码问题C. 二叉搜索树问题D. 图的最小生成树问题答案:B. 编码问题二、填空题1. 分治策略将问题划分为_____个较小的子问题。

答案:2 个2. 动态规划中,必须满足_____两个条件才能使用。

答案:最优子结构和重叠子问题3. 在图的最小生成树算法中,使用了_____策略。

答案:贪心策略4. 剪枝是一种用于优化_____的搜索算法。

答案:回溯算法5. Dijkstra算法用于解决_____问题。

答案:最短路径问题三、简答题1. 简述动态规划算法的基本原理。

答:动态规划是一种将复杂问题划分为简单子问题并将子问题的解存储起来的算法。

动态规划算法的基本原理是利用子问题的解来构建原问题的解,通过解决子问题来解决整体问题。

其核心思想是将原问题分解为相互重叠的子问题,通过递归或迭代的方式依次求解子问题并将解存储起来,以避免重复计算。

动态规划算法通常适用于最优化问题,具有较高的效率和可扩展性。

2. 简述贪心算法的基本原理。

答:贪心算法是一种在每一步选择中都做出当前最优解的策略,以期望最终获得全局最优解的算法。

贪心算法的基本原理是通过贪心策略,即每次选择当前最优解来构建问题的解。

贪心算法通常不需要对问题进行全局搜索,而是根据问题的特点和约束条件,每次选择最优解,逐步构建最终解。

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

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

算法基础答案期末考试试题# 算法基础答案期末考试试题## 一、选择题(每题2分,共20分)1. 以下哪个算法是用于解决最近公共祖先问题的?A. 排序算法B. 快速幂算法C. 二分查找算法D. 深度优先搜索算法2. 在图的遍历中,广度优先搜索(BFS)使用的是什么数据结构来存储待访问的节点?A. 栈B. 队列C. 链表D. 堆3. 动态规划与分治法的区别在于:A. 问题规模的分解B. 子问题重叠C. 递归求解D. 迭代求解4. 以下哪个排序算法是稳定的?A. 快速排序B. 归并排序C. 堆排序D. 冒泡排序5. 在哈希表中,如果哈希函数选择不当,可能导致的问题是:A. 空间浪费B. 内存溢出C. 冲突增加D. 性能提升## 二、简答题(每题10分,共30分)1. 简述贪心算法的基本思想及其适用场景。

2. 解释什么是二叉树的递归遍历,并给出前序遍历的递归算法实现。

3. 描述动态规划与贪心算法在解决问题时的主要区别。

## 三、计算题(每题25分,共50分)1. 给定一个数组 `A = [3, 5, 1, 2, 4]`,请使用归并排序算法对其进行排序,并给出排序过程中的详细步骤。

2. 假设有一个字符串 `S = "banana"`,使用KMP算法查找子串 `T = "anana"` 在 `S` 中的所有出现位置,并给出算法的详细步骤。

## 四、编程题(共30分)编写一个函数 `findMaxSubarraySum`,该函数接受一个整数数组`arr` 和一个整数 `k`,返回 `arr` 中长度为 `k` 的最大子数组和。

如果不存在长度为 `k` 的子数组,则返回 `-1`。

## 五、论述题(共20分)论述分治法在解决排序问题中的应用,并给出一个具体的例子。

请注意,以上内容仅为示例,具体题目和答案需要根据实际教学内容和课程要求进行设计。

在实际考试中,应确保题目的准确性和合理性,以考察学生对算法基础知识的掌握程度。

算法期末考试试卷

算法期末考试试卷

算法期末考试试卷一、选择题(每题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算法,用于计算图中单源最短路径,并用一个图的示例来测试你的函数。

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

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

大学算法期末考试题及答案一、单项选择题(每题2分,共20分)1. 算法复杂度中的T(n)表示什么?A. 时间复杂度B. 空间复杂度C. 迭代次数D. 执行路径长度答案:A2. 在排序算法中,快速排序的平均时间复杂度是:A. O(n^2)B. O(nlogn)C. O(n)D. O(logn)答案:B3. 下列哪个算法不是动态规划算法?A. 斐波那契数列B. 背包问题C. 最长公共子序列D. 二分查找答案:D4. 哈希表的冲突解决策略中,开放寻址法和链地址法的主要区别是什么?A. 开放寻址法使用数组,链地址法使用链表B. 开放寻址法使用链表,链地址法使用数组C. 开放寻址法只能处理少量冲突,链地址法可以处理大量冲突D. 以上都不是答案:C5. 在图的遍历算法中,深度优先搜索(DFS)使用的是:A. 队列B. 栈C. 链表D. 数组答案:B6. 堆排序算法中,将一个堆结构调整为最大堆或最小堆的过程称为:A. 堆调整B. 堆构建C. 堆分解D. 堆合并答案:A7. 以下哪个排序算法是稳定的?A. 快速排序B. 归并排序C. 堆排序D. 选择排序答案:B8. 算法的五个基本特性包括有穷性、确定性、可行性、输入和输出,其中输入可以是:A. 数据B. 初始条件C. 指令D. 任意值答案:B9. 递归算法的效率往往比非递归算法低,这是因为:A. 递归需要额外的内存空间B. 递归需要更多的计算步骤C. 递归会导致栈溢出D. 递归需要重复计算相同的问题答案:D10. 在下列排序算法中,最不适合于排序大量数据的是:A. 插入排序B. 选择排序C. 归并排序D. 快速排序答案:A二、填空题(每题2分,共20分)11. 算法的时间复杂度为O(1),表示该算法的执行时间与输入数据的规模______。

答案:无关12. 在二叉树的遍历中,先序遍历的顺序是先访问根节点,然后按照______的顺序访问所有子树。

答案:先左后右13. 动态规划算法通常用于解决具有______性质的问题。

算法设计与分析期末复习题试题知识点

算法设计与分析期末复习题试题知识点

算法设计与分析期末复习题试题知识点1. 算法基础知识算法的定义、性质与特征算法的正确性算法的复杂性分析常见的算法复杂度:时间复杂度与空间复杂度递归算法与迭代算法2. 排序算法插入排序冒泡排序选择排序快速排序归并排序堆排序排序算法的比较与选择3. 查找算法顺序查找二分查找哈希查找查找算法的比较与选择4. 图算法图的遍历算法:深度优先搜索和广度优先搜索最短路径算法:Dijkstra算法和Floyd-Warshall算法最小生成树算法:Prim算法与Kruskal算法5. 动态规划动态规划的基本概念与原理最优子结构、无后效性与子问题重叠性动态规划算法的设计与实现6. 回溯法回溯法的基本概念与原理问题的解空间与状态空间回溯法算法的设计与实现剪枝策略与优化技巧7. 贪心算法贪心算法的基本概念与原理贪心选择性质与最优子结构贪心算法的设计与实现贪心算法的适用性与局限性8. 网络流与匹配算法最大流问题与最小割问题Ford-Fulkerson算法与Edmonds-Karp算法二分图匹配与匈牙利算法网络流与匹配问题的建模与求解9. 近似算法NP问题与NPC问题近似算法的定义与性能度量近似算法的设计与实现近似算法的适用性与近似比例10. 动态数据结构平衡二叉树:AVL树与红黑树并查集与路径压缩算法哈希表与散列函数动态数据结构的设计与实现以上是算法设计与分析中的一些重要知识点,希望对你的期末复习有所帮助。

在复习过程中,可以针对每个知识点进行深入学习和练习,理解其原理与应用场景,并通过解题来熟悉算法的实际应用。

祝你顺利通过期末考试!。

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

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

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

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

A 棋盘覆盖问题B 选择问题C 归并排序D 0/1背包问题4.下列是动态规划算法基本要素的是( D )。

A、定义最优解B、构造最优解C、算出最优解D、子问题重叠性质5.采用广度优先策略搜索的算法是( A )。

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

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

A 子问题必须是一样的B 子问题不能够重复C 子问题的解可以合并D 原问题和子问题使用相同的方法解9、下面问题(B )不能使用贪心法解决。

A 单源最短路径问题B N皇后问题C 最小花费生成树问题D 背包问题10. 一个问题可用动态规划算法或贪心算法求解的关键特征是问题的( B )。

A 、重叠子问题B 、最优子结构性质C 、贪心选择性质D 、定义最优解11. 以深度优先方式系统搜索问题解的算法称为 ( D ) 。

A 、分支界限算法 B 、概率算法 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 )实现的算法。

A.分治法 B.动态规划法 C.贪心法 D.回溯法 17.用贪心法设计算法的关键是( B )。

A.将问题分解为多个子问题来分别处理 B.选好最优量度标准C.获取各阶段间的递推关系式D.满足最优性原理18.找最小生成树的算法Kruskal 的时间复杂度为( D )(其中n 为无向图的结点数,m 为边数)A .O(n 2)B .O(mlogn)C .O(nlogm)D .O(mlogm) 19.回溯法搜索状态空间树是按照(C )的顺序。

A.中序遍历 B.广度优先遍历 C.深度优先遍历 D.层次优先遍历20.采用广度优先策略搜索的算法是( A )。

A.分支界限法 B.动态规划法 C.贪心法 D.回溯法21.函数32n +10nlogn 的渐进表达式是( B ).A.O( 2n )B. O( 32n )C. O( nlog n )D. O( 10nlog n ) 22.二分搜索算法的时间复杂性为( C )。

A.O(2n )B.O(n )C.O(n log )D. O(n n log ) 23、快速排序算法的时间复杂性为( D )。

A.O(2n ) B.O(n ) C.O(n log ) D. O(n n log )24、算法是由若干条指令组成的有穷序列,而且满足以下性质( D ) A.输入:有0个或多个输入 B.输出:至少有一个输出C. 确定性:指令清晰,无歧义D.有限性:指令执行次数有限,而且执行时间有限A. (1)(2)(3)B. (1)(2)(4)C. (1)(3)(4)D.(1) (2)(3)(4) 25、背包问题的贪心算法所需的计算时间为( B )A. O (n2n )B. O (nlogn )C.O (2n )D.O (n ) 26.下列算法中不能解决0/1背包问题的是( A ) A 贪心法 B 动态规划 C 回溯法 D 分支限界法27. 在寻找n 个元素中第k 小元素问题中,若使用快速排序算法思想,运用分治算法对n 个元素进行划分,应如何选择划分基准?下面 (D) 答案解释最合理。

A .随机选择一个元素作为划分基准 B .取子序列的第一个元素作为划分基准 C .用中位数的中位数方法寻找划分基准D .以上皆可行。

但不同方法,算法复杂度上界可能不同28. 分治法的设计思想是将一个难以直接解决的大问题分割成规模较小的子问题,分别解决子问题,最后将子问题的解组合起来形成原问题的解。

这要求原问题和子问题 ( C ) 。

A .问题规模相同,问题性质相同B .问题规模相同,问题性质不同C .问题规模不同,问题性质相同D .问题规模不同,问题性质不同 29、下面是贪心算法的基本要素的是( C )。

A 、重叠子问题B 、构造最优解C 、贪心选择性质D 、定义最优解30. 函数n n 1032的渐进表达式是( D )。

A. O(23n ) B. O(3) C. O(n 10) D.O(2n ) 二、填空题1、解决0/1背包问题可以使用动态规划、回溯法和分支限界法,其中不需要排序的是 动态规划 ,需要排序的是 回溯法 ,分支限界法 。

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

3.贪心算法基本要素有 最优度量标准 和 最优子结构 。

4.回溯法解旅行售货员问题时的解空间树是 排列树 。

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

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

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

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

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

10.回溯法搜索解空间树时,常用的两种剪枝函数为约束函数和限界函数。

11.任何可用计算机求解的问题所需的时间都与其规模有关。

12.快速排序算法的性能取决于划分的对称性。

13.背包问题的贪心算法void Knapsack(int n,float M,float v[],float w[],float x[]){Sort(n,v,w);int i;for (i=1;i<=n;i++) x[i]=0;float c=M;for (i=1;i<=n;i++) {if (w[i]>c) break;x[i]=1;c - =w[i];}if (i<=n) x[i]=c/w[i];}14.下面算法的基本运算是加法(或:赋值)运算,该算法中第4步执行了2n-1 次。

算法COUNT输入:正整数n(n=k2)。

输出:count的值。

1. count=02. while n>=13. for j=1 to n4. count =count+15. end for6. n=n/27. end whileend COUNT15.算法是由若干条指令组成的有穷序列,且要满足输入、输出、确定性和有限性四条性质。

16.快速排序、插入排序和选择排序算法中,快速排序算法是分治算法。

17. 下面算法的基本语句是__ S = S + i*j;____, 算法的时间复杂度是___O(2n)_____int fun(int n){int S = 0;for (int i=1; i <=n; i++ )for(int j=1; j<n – i ; j++)S = S + i*j;return S;}18. 最小生成树的prim算法应用的是贪心算法思想。

19. 分治算法的基本步骤包括分解子问题,递归求解子问题,合并解20. 归并排序和快速排序在平均情况下的时间复杂度都是O(nlogn),但是最坏情况下两种算法有区别,其中归并排序为 O(nlogn),快速排序为 _O(2n) 二、算法设计1.下面是用回溯法求解图的m着色问题的算法(求出所有解)。

图的m着色问题:给定一个无向连通图G和m种颜色,给图G的所有顶点着色,使得任何两相邻顶点的颜色不同。

已有函数color(k)用于在前k-1个顶点已着色的情况下,判断第k个顶点是否可着颜色x[k];是则返回true, 否则返回false。

输入:正整数m, n和含n个顶点的无向连通图G的邻接矩阵graph。

输出:图G 的m 着色问题的所有解, 若无解,则输出no solution 。

flag=falsek=1; x[1]=0while k>=1while (1)x[k]=x[k]+1 if color(k) then if (2) thenflag=true; output x[1..n]elsek= (3) (4) end if end if end while(5) end whileif not flag then output “no solution ”end m-COLORING(1) x[k]<m (2) k=n (3) k+1 (4) x[k]=0 (5) k=k-12.下面是求解矩阵链乘问题的动态规划算法。

矩阵链乘问题:给出n 个矩阵M 1, M 2, …, M n , M i 为r i ⨯r i+1阶矩阵,i=1, 2, …, n ,求计算M 1M 2…M n 所需的最少数量乘法次数。

记 M i, j =M i M i+1…M j , i<=j 。

设C[i, j], 1<=i<=j<=n, 表示计算M i, j 的所需的最少数量乘法次数,则⎪⎩⎪⎨⎧<++==+≤<j i , }r r r j] C[k,1]-k ,i [C {min ji , 0j] ,i [C 1j k i jk i算法 MATCHAIN输入:矩阵链长度n, n 个矩阵的阶r[1..n+1], 其中r[1..n]为n 个矩阵的行数,r[n+1]为第n个矩阵的列数。

输出:n个矩阵链乘所需的数量乘法的最少次数。

for i=1 to n C[i, i]= (1)for d=1 to n-1for i=1 to n-dj= (2)C[i, j]= ∞for k=i+1 to jx= (3)if x<C[i, j] then(4) =xend ifend forend forend forreturn (5)end MATCHAIN(1) 0 (2) i+d (3) C[i, k-1]+C[k, j]+r[i]*r[k]*r[j+1](4) C[i, j] (5) C[1, n]3.下面是用回溯法解n皇后问题的算法(求出所有解)。

相关文档
最新文档