算法考试试题及答案

一、填空题(本题10分,每空1分) 1、 算法的复杂性是 的度量,是评价算法优劣的重要依据。 2、 设n为正整数,利用大“O(·)”记号,将下列程序段的执行时间表示为n的函数,则下面程序段的时间复杂度为 。 i=1; k=0; while(i3、 计算机的资源最重要的是 和 资源。因而,算法的复杂性有 和 之分。

n2,f(n)的渐进性态f(n)= O( 、 f(n)= 6×2 +n ) 4 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)的阶。 A.不高于 B.不低于 C.等价于 D.逼近 6、对于含有n个元素的子集树问题,最坏情况下其解空间的叶结点数目为( )。

+1n-1 D. 2 -1 ! 不满足以下( )、程序可以特征 7A.输入 B.输出 C.确定性 D.

有限性 不能在线性时间完成排序( ) 8、以下A.计数排序 B.基数排序 C.堆排序

D.桶排序 不一定得到问题的最优解 、以下( )9A.贪心算法 B.回溯算法 C.分支限界法

D.动态规划法 10、以下()不包括在图灵机结构中 磁带D. 计算器C. 读写磁头B. 控制器A. 三、简答题(本题20分,每小题5分)

k个运动员要进行循环赛,现设计一个满足以下要求的比赛日程表: 、设有n=21①每个选手必须与其他n-1名选手比赛各一次; ②每个选手一天至多只能赛一次; ③循环赛要在最短时间内完成。 k ,循环赛最少需要进行几天;n=2 (1)如果2=4时,请画出循环赛日程表。n=2 (2)当2、简述最优子结构性质。 3、简单描述回溯法基本思想。 4、何谓P、NP问题 四、算法填空(本题30分,每空2分) 1、Dijkstra算法是解单源最短路径问题的贪心算法。请你阅读下面伪代码并在空白处填上适当的代码。 d[s]=0 Relax(u,v,w) 1 {d[v]=d[u]+w[u,v] p[v]=u } dijkstra(G,w,s) 1. 2 2. S=Φ 3. Q=V[G] Q<> 3 do u=min(Q) S=S∪{u} for each vertex v∈adj[u] //所有u的邻接点 v do 4 2、某工厂预计明年有N个新建项目,每个项目的投资额 w[k]及其投资后的收益 v[k]已知。投资总额为C,问如何选择项目才能使总收益最大。 Invest-Program( ) { for (j=0;j<=C;j++) 5 for (j=w[n];j<=C;j++) m[n][j]=v[n]; for (i=n-1;i>1;i--) { int jMax=min(w[i]-1,c); for(j=0;j<=jMax;j++) m[i][j]= 6 ; for (j=w[i];j<=C;j++) m[i][j]=max( 7 ); } m[1][c]=m[2][c]; if( 8 ) m[1][c]=max(m[1][c],m[2][c-w[1]]+v[1]); } 3、N后问题 (1)用二维数组A[N][N]存储皇后位置,若第i行第j列放有皇后,则A[i][j]为非0值,否则值为0。 (2)分别用一维数组M[N]、L[2*N-1]、R[2*N-1]表示竖列、左斜线、右斜线是否放有棋子,有则值为1,否则值为0。 for(j=0;jif( 9 ) /*安全检查*/ { A[i][j]=i+1; /*放皇后*/ 10 ; if(i==N-1) 输出结果; else 11 ;; /*试探下一行*/ 12 ; /*去皇后*/ 13 ;; } 4、通过键盘输入一个高精度的正整数n(n的有效位数≤240),去掉其中任意s个数字后,剩下的数字按原左右次序将组成一个新的正整数。编程对给定的n 和s,寻找一种方案,使得剩下的数字组成的新数最小。 delete(n ,s) {输入s, n; while( s > 0 ) { 14 //从串首开始找 while ( 15 ) i++; delete(n,i); //删除串n的第i个字符 s--; } while (length(n)>1)&& (n[1]=‘0') delete(n,1); //删去串首可能产生的无用零 输出n; } 五、请你阐述prim算法的基本思想。并给出下图的最小生成树(要求画出生成树,分析过程 分)10(本题可以省略).

六、算法分析题(本题10分) 数字全排列问题:任意给出从1到N的N个连续的自然数的各种排列。如N=3时,共有以下6种排列方式:123,132,213,231,312,321。算法描述如下。 画出N=3时递归调用时堆栈变化情况,写出相对应i,j的值。设数组b的初始值为1,2,3。 perm(int b[], int i) {int k,j; if(i==N) 输出; else for(j=i;j<=num;j++) {swap(b[i],b[j]); perm(b,i+1); swap(b[j],b[i]); } }/*初始调用时i = 1;*/

答案: 一、填空题(本题10分,每空1分) 1、 算法效率 2、 O(n) 3、 时间、空间 时间复杂度、空间复杂度

n 2、 45、 直接 间接 6、 独立 二、选择题(本题20分,每小题2分) 1-5:BABCA 6-10:BDCAC 三、简答题(本题20分,每小题5分)

k-1天(2分)2、1(1);

2 。分)3时,循环赛日程表(=4n=2)当2( 1 2 3 4

2、某个问题的最优解包含着其子问题的最优解。这种性质称为最优子结构性质。 3、回溯法的基本思想是在一棵含有问题全部可能解的状态空间树上进行深度优先搜索,解为叶子结点。 搜索过程中,每到达一个结点时,则判断该结点为根的子树是否含有问题的解,如果可以确定该子树中不含有问题的解,则放弃对该子树的搜索,退回到上层父结点,继续下一步深度优先搜索过程。在回溯法中,并不是先构造出整棵状态空间树,再进行搜索,而是在搜索过程,逐步构造出状态空间树,即边搜索,边构造。 4、P(Polynomial问题):也即是多项式复杂程度的问题。 NP就是Non-deterministicPolynomial的问题,也即是多项式复杂程度的非确定性问题。 四、算法填空(本题30分,每空2分) 1、(1)d[v]>d[u]+w(u,v) (2)Init-single-source(G,s) (3)Φ (4)Relax(u,v,w) 2、(5)m[n][j]=0; (6)m[i+1][j] (7)m[i+1][j],m[i+1][j-w[i]]+v[i] (8)c>=w[1] 3、(9) !M[j]&&!L[i+j]&&!R[i-j+N] (10) M[j]=L[i+j]=R[i-j+N]=1; (11) try(i+1,M,L,R,A) (12) A[i][j]=0 (13) M[j]=L[i+j]=R[i-j+N]=0 4、(14)i=1; (15)(i五、阐述prim算法的基本思想(本题10分) (5分) prim算法的基本思想是: 设G=(V,E)是连通带权图,V={1,2,…,n}。 首先置U={1},然后,只要U是V的真子集,就作如下的贪心选择:选取满足条件i∈U,j∈V-U,且c[i][j]最小的边,将顶点j添加到U中。这个过程一直进行到U=V时为止。 在这个过程中选取到的所有边恰好构成G的一棵最小生成树。 分)最小生成树如下:5(.

(1) i=1,j=1 六、算法设计题(本题10分) perm(int b[], int i)(2) i=3,j=2 {int k,j;输出1,2,3 if(i==N) b数组各元素值;输出(3) i=3,j=3 else输出1,3,2 for(j=i;j<=N;j++) {swap(b[i],b[j]); (4)i=1,j=2 perm(b,i+1); (1)(2)(3)(4)(5)(6)(7)(8)(9) swap(b[j],b[i]); (5)i=3,j=2 } 输出2,1,3 }/*i = 1;*/ 初始调用时 (6)i=3,j=3 输出2,3,1 (7)i=1,j=3 (8)i=3,j=2

输出3,2,1 (9)i=3,j=3

合集下载

算法初步测试题及答案

算法初步测试题及答案

算法初步测试题及答案work Information Technology Company.2020YEAR2第一章 算法初步一、选择题1.看下面的四段话,其中是解决问题的算法的是( ).A .把高一5班的同学分成两组,高个子参加篮球赛,矮个子参加拔河比赛B .把高一5班的同学分成两组,身高达到170 cm 的参加篮球赛,不足170 cm 的参加拔河比赛C .把a ,b 的值代入x =ab ,求方程ax =b 的解D .从2开始写起,后一个数为前一个数与2的和,不断地写,写出所有偶数2.任何一个算法都必须有的基本结构是( ). A .顺序结构 B .条件结构 C .循环结构D .三个都有3.右边的程序框图(如图所示),能判断任意输入的整数x 的奇偶性:其中判断框内的条件是( ).A .m =0B .x =0C .x =1D .m =14.给出以下一个算法的程序框图(如图所示),该程序框图的功能是( ).A .求输出a ,b ,c 三数的最大数B .求输出a ,b ,c 三数的最小数C .将a ,b ,c 按从小到大排列D .将a ,b ,c 按从大到小排列5.右图给出的是计算21+41+61+ … +201的值的 一个程序框图,其中判断框内应填入的条件是( ).A .i >10B .i <10C .i >20D .i <206.直到型循环结构为( ).ABC D7.下列给出的赋值语句中正确的是().A.4=M B.M=-MC.2B=A-3 D.x+y=08.右边程序执行后输出的结果是().A.-1 B.0 C.1 D.29.我国古代数学发展曾经处于世界领先水平,特别是宋、元时期的“算法”,其中可以同欧几里德辗转相除法相媲美的是().A.割圆术B.更相减损术C.秦九韶算法D.孙子乘余定理10.下面是一个算法的程序.如果输入的x的值是20,则输出的y的值是().A.100 B.50 C.25 D.150二、填空题11.下列关于算法的说法正确的是. (填上正确的序号)①某算法可以无止境地运算下去②一个问题的算法步骤不能超过1万次③完成一件事情的算法有且只有一种④设计算法要本着简单方便可操作的原则12.下列算法的功能是.S1输入A,B;(A,B均为数据)S2A=A+B;S3B=A-B;S4A=A-B;S5输出A,B.13.如图,输出的结果是.14 如图,输出的结果是.15 已知函数y=⎩⎨⎧-+,x,x232流程图表示的是给定x值,求其相应函数值的算法.请将该流程图补充完整.其中①处应填,②处应填.若输入x=3,则输出结果为.x≤3316.如图,输出结果为.三、解答题17.某小区每月向居民收取卫生费,计费方法是:3人和3人以下的住户,每户收取5元;超过3人的住户,每超出1人加收1.2元.设计一个算法,根据输入的人数,计算应收取的卫生费,并画出程序框图.18.编写程序,计算一个学生数学、语文、英语三门课的平均成绩.19.假定在银行中存款10 000元,按11.25%的利率,一年后连本带息将变为11 125元,若将此款继续存人银行,试问多长时间就会连本带利翻一番请用直到型和当型两种语句写出程序.20.用辗转相除法求91和49的最大公约数.第一章算法初步参考答案一、选择题1.解析:A.何为高个子,何为矮个子,标准不明确.C.当a=0时公式是无效的.D.非有限步可以完成.只有B符合算法的三个要求,所以答案是B.解:选B.2.A 解析:顺序结构是最简单的结构,也是最基本的结构.3.A 解析:x除以2,如余数为0,则x为偶数;余数不为0,则x为奇数.4.B 解析:从程序框图可知:输出的是三个数中的最小值.5.A 解析:这是一个10项求和问题.6.B 解析:直到型循环在执行了一次循环体之后,对控制循环条件进行判断,当条件不满足时反复做,满足则停止.7.B 解析:依据赋值语句的概念,选B是正确的.8.B 解析:程序执行后输出的结果是0,故选B.9.B10.D 解析:∵20>5,∴y=20×7.5=150,∴选 D.二、填空题11.答案:④.解析:由算法的特点所确定.12.答案:实现数据A,B的互换.解析:利用赋值语句的意义与题中算法的步骤进行分析.13.答案:12. 解析:m=2,p=7,m=12.4x=10 000r=11.25/100y=0WHILE x<20 000 y=y+1 x=10 000y=0r=11.25/100 Doy=y+114.答案:105. 解析:T=1,I=1,T=1,I=3,不满足条件;T=3,I=5,不满足条件;T=15,I=7,不满足条件;T=105,I=9,满足条件.输出T.15.答案:①x≤3;②y=-3x2;5. 解析:根据给出函数的解析式分析可填出.16.答案:9.解析:逐个取值计算.三、解答题17.解析:根据题意,可考虑用条件结构来进行算法设计.解:算法步骤:第一步,输入人数x,设收取的卫生费为m(元).第二步,判断x与3的大小.若x>3,则费用为m=5+(x-3)×1.2;若x≤3,则费用为m=5.第三步,输出m.18.分析:先写出算法,画出程序框图,再进行编程.程序框图:程序:19.解:用当型用直到型20.解析:由 91=49×1+42,得 42=91-49×1.因为余数42≠0,所以由辗转相除法,得 49=42×1+7,即 7=49-42×1; 42=7×6,即 0=42-7×6.所以,91和49的最大公约数等于7.5。

算法分析与设计试题及答案

算法分析与设计试题及答案

算法分析与设计试题及答案一、选择题1. 下列哪个是属于分治算法的例子?A. 冒泡排序B. 归并排序C. 顺序查找D. 选择排序答案:B2. 在排序算法中,时间复杂度最优的是:A. 冒泡排序B. 插入排序C. 归并排序D. 快速排序答案:C3. 哪个不是动态规划的特点?A. 具有重叠子问题B. 通过递归求解C. 需要保存子问题的解D. 具有最优子结构答案:B4. 在图的广度优先搜索算法中,使用的数据结构是:A. 栈B. 队列C. 数组D. 堆栈答案:B5. 在最小生成树算法中,下列哪个不属于贪心策略?A. Kruskal算法B. Prim算法C. Dijkstra算法D. Prim-Kruskal混合算法答案:C二、简答题1. 请简述分治算法的思想和应用场景。

答案:分治算法的思想是将原问题分解成若干个规模较小且类似的子问题,然后解决子问题,最后将子问题的解合并得到原问题的解。

其应用场景包括排序算法(如归并排序、快速排序)、搜索算法(如二分查找)等。

2. 什么是动态规划算法?请给出一个动态规划算法的示例。

答案:动态规划算法是一种通过将问题分解成子问题并解决子问题来解决复杂问题的方法。

它的特点是具有重叠子问题和最优子结构性质。

以斐波那契数列为例,可以使用动态规划算法求解每一项的值,而不需要重复计算。

3. 图的深度优先搜索和广度优先搜索有什么区别?答案:图的深度优先搜索(Depth First Search,DFS)是一种先访问子节点再访问兄弟节点的遍历算法,通常使用递归或者栈实现。

而广度优先搜索(Breadth First Search,BFS)则是以层次遍历的方式展开搜索,使用队列来实现。

DFS更适合用于搜索路径,BFS则适用于寻找最短路径等。

4. 请简述贪心算法的特点及其应用场景。

答案:贪心算法的特点是每一步都采取当前状态下最优的选择,以期望得到全局最优解。

然而,贪心算法并不一定能求解所有问题的最优解,但对于一些特定问题,贪心算法往往能得到近似最优解。

(完整版)算法设计与分析考试题及答案

(完整版)算法设计与分析考试题及答案

一、填空题(20分)1.一个算法就是一个有穷规则的集合,其中之规则规定了解决某一特殊类型问题的一系列运算,此外,算法还应具有以下五个重要特性:_________,________,________,__________,__________。

2.算法的复杂性有_____________和___________之分,衡量一个算法好坏的标准是______________________。

3.某一问题可用动态规划算法求解的显著特征是____________________________________。

4.若序列X={B,C,A,D,B,C,D},Y={A,C,B,A,B,D,C,D},请给出序列X 和Y的一个最长公共子序列_____________________________。

5.用回溯法解问题时,应明确定义问题的解空间,问题的解空间至少应包含___________。

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

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

8.0-1背包问题的回溯算法所需的计算时间为_____________,用动态规划算法所需的计算时间为____________。

9.动态规划算法的两个基本要素是___________和___________。

10.二分搜索算法是利用_______________实现的算法。

二、综合题(50分)1.写出设计动态规划算法的主要步骤。

2.流水作业调度问题的johnson算法的思想。

3.若n=4,在机器M1和M2上加工作业i所需的时间分别为a i和b i,且(a1,a2,a3,a4)=(4,5,12,10),(b1,b2,b3,b4)=(8,2,15,9)求4个作业的最优调度方案,并计算最优值。

4.使用回溯法解0/1背包问题:n=3,C=9,V={6,10,3},W={3,4,4},其解空间有长度为3的0-1向量组成,要求用一棵完全二叉树表示其解空间(从根出发,左1右0),并画出其解空间树,计算其最优值及最优解。

经典算法试题及答案

经典算法试题及答案

经典算法试题及答案题目一:找出旋转排序数组中的最小值题目描述:假设按照升序排序的数组在预先未知的某个点上进行了旋转。

例如,数组 `[0,1,2,4,5,6,7]` 可能变为`[4,5,6,7,0,1,2]`。

请找出并返回数组中的最小元素。

说明:- 原数组是一个升序排序的数组- 数组中可能包含重复的元素- 你的算法应该具有 O(log n) 的时间复杂度答案解析:这个问题可以通过二分查找的方法来解决。

以下是详细的解题步骤:1. 初始化两个指针 `left` 和 `right` 分别指向数组的开头和结尾。

2. 当 `left` 小于 `right` 时,执行以下步骤:- 找到中间位置 `mid`。

- 如果 `nums[mid]` 大于 `nums[right]`,则最小值在 `mid+1` 到 `right` 之间,更新 `left = mid + 1`。

- 如果 `nums[mid]` 小于 `nums[right]`,则最小值在 `left` 到 `mid` 之间,更新 `right = mid`。

- 如果 `nums[mid]` 等于 `nums[right]`,则无法判断最小值的位置,需要减少 `right`。

3. 当 `left` 等于 `right` 时,返回 `nums[left]`。

代码实现:```pythondef findMin(nums):left, right = 0, len(nums) - 1while left < right:mid = left + (right - left) // 2if nums[mid] > nums[right]:left = mid + 1elif nums[mid] < nums[right]:right = midelse:right -= 1return nums[left]```题目二:合并两个有序链表题目描述:将两个有序链表合并为一个新的有序链表。

数据结构与算法 试题及答案

数据结构与算法 试题及答案

绪论一、填空题1、数据的逻辑结构是数据元素之间的逻辑关系,通常有下列4类:集合_、线性结构_、树型结构_、图状结构_。

2、数据的存储结构是数据在计算机存储器里的表示,主要有4种基本存储方法:顺序存储_、链式存储_、索引存储_、散列存储_。

二、选择题1、一个算法必须在执行有穷步之后结束,这是算法的(B )。

A、正确性B、有穷性C、确定性D、可行性2、算法的每一步必须有确切的定义,也就是说,对于每步需要执行的动作必须严格、清楚地给出规定,这是算法的(A)。

A、正确性B、有穷性C、确定性D、可行性3、算法原则上都是能够有机器或人所完成的。

整个算法好象是一个解决问题的“工作序列”,其中的每一步都是我们力所能及的一个动作,这是算法的(D)A、正确性B、有穷性C、确定性D、可行性三、简单题1、什么是数据结构?什么是算法?两者有什么关系?什么是数据结构?数据结构是按某种逻辑关系组织起来的一批数据(或称带结构的数据元素的集合)应用计算机语言并按一定的存储表示方式把它们存储在计算机的存储器中,并在其上定义了一个运算的集合。

什么是算法?广义地说,为解决一个问题而采取的方法和步骤,就称为“算法”两者有什么关系?算法与数据结构关系密切。

选择的数据结构是否恰当直接影响算法的效率;而数据结构的优劣由算法的执行来体现。

2、什么是复杂度和空间复杂度?时间复杂度是指执行算法所需要的计算工作量;而空间复杂度是指执行这个算法所需要的内存空间。

3、数据的逻辑结构分几种?存储结构又有哪几种?数据的逻辑结构:结构定义中的“关系”,描述的是数据元素之间的逻辑关系;包括线性结构(线性表、栈、队、串、数组)和非线性结构(图形结构、树形结构);数据的存储结构(物理结构):数据结构在计算机中的表示(又称映像),包括数据元素的表示和关系德表示。

有顺序存贮(向量存贮)、链式存贮、索引存贮、散列存贮。

线性表1、一个线性表第一个元素的存储地址是100,每个元素的长度为2,则第5 个元素的地址是( B)。

算法设计与分析考试题目及答案

算法设计与分析考试题目及答案

算法设计与分析考试题目及答案Revised at 16:25 am on June 10, 2021I hope tomorrow will definitely be better算法分析与设计期末复习题一、 选择题1.应用Johnson 法则的流水作业调度采用的算法是DA. 贪心算法B. 分支限界法C.分治法D. 动态规划算法塔问题如下图所示;现要求将塔座A 上的的所有圆盘移到塔座B 上,并仍按同样顺序叠置;移动圆盘时遵守Hanoi 塔问题的移动规则;由此设计出解Hanoi 塔问题的递归算法正确的为:B3. 动态规划算法的基本要素为C A. 最优子结构性质与贪心选择性质 B .重叠子问题性质与贪心选择性质 C .最优子结构性质与重叠子问题性质 D. 预排序与递归调用4. 算法分析中,记号O 表示B , 记号Ω表示A , 记号Θ表示D ; A.渐进下界 B.渐进上界 C.非紧上界 D.紧渐进界 E.非紧下界5. 以下关于渐进记号的性质是正确的有: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. Ofn+Ogn = Omin{fn,gn} D. f (n)O(g(n))g(n)O(f (n))=⇔=Hanoi 塔A. void hanoiint n, int A, int C, int B { if n > 0 {hanoin-1,A,C, B; moven,a,b;hanoin-1, C, B, A; } B. void hanoiint n, int A, int B, int C { if n > 0 {hanoin-1, A, C, B; moven,a,b; hanoin-1, C, B, A; }C. void hanoiint n, int C, int B, int A { if n > 0 { hanoin-1, A, C, B; moven,a,b; hanoin-1, C, B, A; }D. void hanoiint n, int C, int A, int B { if n > 0 {hanoin-1, A, C, B; moven,a,b;hanoin-1, C, B, A; }6.能采用贪心算法求最优解的问题,一般具有的重要性质为:AA. 最优子结构性质与贪心选择性质B.重叠子问题性质与贪心选择性质C.最优子结构性质与重叠子问题性质D. 预排序与递归调用7. 回溯法在问题的解空间树中,按D策略,从根结点出发搜索解空间树;广度优先 B. 活结点优先 C.扩展结点优先 D. 深度优先8. 分支限界法在问题的解空间树中,按A策略,从根结点出发搜索解空间树;A.广度优先 B. 活结点优先 C.扩展结点优先 D. 深度优先9. 程序块A是回溯法中遍历排列树的算法框架程序;A.B.C.D.10.xk的个数;11. 常见的两种分支限界法为DA. 广度优先分支限界法与深度优先分支限界法;B. 队列式FIFO分支限界法与堆栈式分支限界法;C. 排列树法与子集树法;D. 队列式FIFO分支限界法与优先队列式分支限界法;12. k带图灵机的空间复杂性Sn是指BA.k带图灵机处理所有长度为n的输入时,在某条带上所使用过的最大方格数;B.k带图灵机处理所有长度为n的输入时,在k条带上所使用过的方格数的总和;C.k带图灵机处理所有长度为n的输入时,在k条带上所使用过的平均方格数;D.k带图灵机处理所有长度为n的输入时,在某条带上所使用过的最小方格数;13. N P类语言在图灵机下的定义为DA.NP={L|L是一个能在非多项式时间内被一台NDTM所接受的语言};B.NP={L|L是一个能在多项式时间内被一台NDTM所接受的语言};C.NP={L|L是一个能在多项式时间内被一台DTM所接受的语言};D.NP={L|L是一个能在多项式时间内被一台NDTM所接受的语言};14. 记号O的定义正确的是A;A.Ogn = { fn | 存在正常数c和n0使得对所有n≥n0有:0≤ fn ≤cgn };B.Ogn = { fn | 存在正常数c和n0使得对所有n≥n0有:0≤ cgn ≤fn };>0使得对所有n≥n0C.Ogn = { fn | 对于任何正常数c>0,存在正数和n有:0 ≤fn<cgn };>0使得对所有n≥n0D.Ogn = { fn | 对于任何正常数c>0,存在正数和n有:0 ≤cgn < fn };15. 记号Ω的定义正确的是B;A.Ogn = { fn | 存在正常数c和n0使得对所有n≥n0有:0≤ fn ≤cgn };B.Ogn = { fn | 存在正常数c和n0使得对所有n≥n0有:0≤ cgn ≤fn };>0使得对所有n≥n0有:C.gn = { fn | 对于任何正常数c>0,存在正数和n0 ≤fn<cgn };D.gn = { fn | 对于任何正常数c>0,存在正数和n0 >0使得对所有n≥n0有:0 ≤cgn < fn };二、 填空题1. 下面程序段的所需要的计算时间为 2O(n ) ;2.3.4. 5.6. 用回溯法解题的一个显着特征是在搜索过程中动态产生问题的解空间;在任何时刻,算法只保存从根结点到当前扩展结点的路径;如果解空间树 中从根结点到叶结点的最长路径的长度为hn,则回溯法所需的计算空间通常为Ohn ;7. 回溯法的算法框架按照问题的解空间一般分为子集树算法框架与排列树算法框架;8. 用回溯法解0/1背包问题时,该问题的解空间结构为子集树结构; 9.用回溯法解批处理作业调度问题时,该问题的解空间结构为排列树结构; 10.用回溯法解0/1背包问题时,计算结点的上界的函数如下所示,请在空格中填入合适的内容:11. n m12. 用回溯法解图的m着色问题时,使用下面的函数OK检查当前扩展结点的每一个儿子所相应的颜色的可用性,则需耗时渐进时间上限Omn;13.;设分分解为k个子问题以及用merge将k个子问题的解合并为原问题的解需用fn个单位时间;用Tn表示该分治法解规模为|P|=n的问题所需的计算时间,则有:(1)1 ()(/)()1O nT nkT n m f n n=⎧=⎨+>⎩通过迭代法求得Tn的显式表达式为:log1log()(/)nmk j jmjT n n k f n m-==+∑试证明Tn的显式表达式的正确性;2. 举反例证明0/1背包问题若使用的算法是按照p i/w i的非递减次序考虑选择的物品,即只要正在被考虑的物品装得进就装入背包,则此方法不一定能得到最优解此题说明0/1背包问题与背包问题的不同;证明:举例如:p={7,4,4},w={3,2,2},c=4时,由于7/3最大,若按题目要求的方法,只能取第一个,收益是7;而此实例的最大的收益应该是8,取第2,3 个;3. 求证:Ofn+Ogn = Omax{fn,gn} ;证明:对于任意f1n∈ Ofn ,存在正常数c1和自然数n1,使得对所有n≥n1,有f1n≤ c1fn ;类似地,对于任意g1n ∈ Ogn ,存在正常数c2和自然数n2,使得对所有n≥n2,有g1n ≤c2gn ;令c3=max{c1, c2}, n3 =max{n1, n2},hn= max{fn,gn} ;则对所有的 n ≥ n3,有f1n +g1n ≤ c1fn + c2gn≤c3fn + c3gn= c3fn + gn≤ c32 max{fn,gn} = 2c3hn = Omax{fn,gn} .4. 求证最优装载问题具有贪心选择性质;最优装载问题:有一批集装箱要装上一艘载重量为c 的轮船;其中集装箱i 的重量为Wi;最优装载问题要求确定在装载体积不受限制的情况下,将尽可能多的集装箱装上轮船; 设集装箱已依其重量从小到大排序,x 1,x 2,…,x n 是最优装载问题的一个最优解;又设1min{|1}i i nk i x ≤≤== ;如果给定的最优装载问题有解,则有1k n ≤≤;证明: 四、 解答题1. 机器调度问题;问题描述:现在有n 件任务和无限多台的机器,任务可以在机器上得到处理;每件任务的开始时间为s i ,完成时间为f i ,s i <f i ;s i ,f i 为处理任务i 的时间范围;两个任务i,j 重叠指两个任务的时间范围区间有重叠,而并非指i,j 的起点或终点重合;例如:区间1,4与区间2,4重叠,而与4,7不重叠;一个可行的任务分配是指在分配中没有两件重叠的任务分配给同一台机器;因此,在可行的分配中每台机器在任何时刻最多只处理一个任务;最优分配是指使用的机器最少的可行分配方案;问题实例:若任务占用的时间范围是{1,4,2,5,4,5,2,6,4,7},则按时完成所有任务最少需要几台机器提示:使用贪心算法画出工作在对应的机器上的分配情况;2. 已知非齐次递归方程:f (n)bf (n 1)g(n)f (0)c =-+⎧⎨=⎩ ,其中,b 、c 是常数,gn 是n 的某一个函数;则fn 的非递归表达式为:nnn i i 1f (n)cb b g(i)-==+∑;现有Hanoi 塔问题的递归方程为:h(n)2h(n 1)1h(1)1=-+⎧⎨=⎩ ,求hn 的非递归表达式;解:利用给出的关系式,此时有:b=2, c=1, gn=1, 从n 递推到1,有: 3. 单源最短路径的求解;问题的描述:给定带权有向图如下图所示G =V,E,其中每条边的权是非负实数;另外,还给定V 中的一个顶点,称为源;现在要计算从源到所有其它各顶点的最短路长度;这里路的长度是指路上各边权之和;这个问题通常称为单源最短路径问题;解法:现采用Dijkstra 算法计算从源顶点1到其它顶点间最短路径;请将此过程填入下表中;4. 请写出用回溯法解装载问题的函数; 装载问题:有一批共n 个集装箱要装上2艘载重量分别为c1和c2的轮船,其中集装箱i 的重量为wi,且121ni i w c c =≤+∑;装载问题要求确定是否有一个合理的装载方案可将这n 个集装箱装上这2艘轮船;如果有,找出一种装载方案;解:void backtrack int i{用分支限界法解装载问题时,对算法进行了一些改进,下面的程序段给出了改进部分;试说明斜线部分完成什么功能,以及这样做的原因,即采用这样的方式,算法在执行上有什么不同;初始时将;也就是说,重量仅在搜索进入左子树是增加,因此,可以在算法每一次进入左子树时更新bestw 的值;43 2 110030maxint10 - {1} 初始 dist5 dist4 dist3 dist2 u S 迭代7. 最长公共子序列问题:给定2个序列X={x 1,x2,…,xm }和Y={y 1,y2,…,yn },找出X 和Y 的最长公共子序列;由最长公共子序列问题的最优子结构性质建立子问题最优值的递归关系;用cij 记录序列Xi 和Yj 的最长公共子序列的长度;其中, Xi={x1,x2,…,xi};Y j={y1,y2,…,yj};当i=0或j=0时,空序列是Xi 和Yj 的最长公共子序列;故此时Cij=0;其它情况下,由最优子结构性质可建立递归关系如下:00,0[][][1][1]1,0;max{[][1],[1][]},0;i j i ji j c i j c i j i j x y c i j c i j i j x y ⎧==⎪=--+>=⎨⎪-->≠⎩在程序中,bij 记录Cij 的值是由哪一个子问题的解得到的;8.1.2.3.4.5.用回溯法解问题时,应明确定义问题的解空间,问题的解空间至少应包含___________;6.动态规划算法的基本思想是将待求解问题分解成若干____________,先求解___________,然后从这些____________的解得到原问题的解;7.以深度优先方式系统搜索问题解的算法称为_____________;背包问题的回溯算法所需的计算时间为_____________,用动态规划算法所需的计算时间为____________;9.动态规划算法的两个基本要素是___________和___________;10.二分搜索算法是利用_______________实现的算法;二、综合题50分1.写出设计动态规划算法的主要步骤;2.流水作业调度问题的johnson算法的思想;3.若n=4,在机器M1和M2上加工作业i所需的时间分别为ai 和bi,且a 1,a2,a3,a4=4,5,12,10,b1,b2,b3,b4=8,2,15,9求4个作业的最优调度方案,并计算最优值;4.使用回溯法解0/1背包问题:n=3,C=9,V={6,10,3},W={3,4,4},其解空间有长度为3的0-1向量组成,要求用一棵完全二叉树表示其解空间从根出发,左1右0,并画出其解空间树,计算其最优值及最优解;5.设S={X1,X2,···,Xn}是严格递增的有序集,利用二叉树的结点来存储S中的元素,在表示S的二叉搜索树中搜索一个元素X,返回的结果有两种情形,1在二叉搜索树的内结点中找到X=Xi ,其概率为bi;2在二叉搜索树的叶结点中确定X∈Xi ,Xi+1,其概率为ai;在表示S的二叉搜索树T中,设存储元素Xi的结点深度为C i ;叶结点Xi,Xi+1的结点深度为di,则二叉搜索树T的平均路长p为多少假设二叉搜索树Tij={Xi ,Xi+1,···,Xj}最优值为mij,Wij= ai-1+bi+···+bj+aj,则mij1<=i<=j<=n递归关系表达式为什么6.描述0-1背包问题;三、简答题30分1.流水作业调度中,已知有n个作业,机器M1和M2上加工作业i所需的时间分别为ai 和bi,请写出流水作业调度问题的johnson法则中对ai和bi的排序算法;函数名可写为sorts,n2.最优二叉搜索树问题的动态规划算法设函数名binarysearchtree答案:一、填空1.确定性有穷性可行性 0个或多个输入一个或多个输出2.时间复杂性空间复杂性时间复杂度高低3. 该问题具有最优子结构性质4.{BABCD}或{CABCD}或{CADCD}5.一个最优解6.子问题子问题子问题7.回溯法8. on2n omin{nc,2n}9.最优子结构重叠子问题10.动态规划法二、综合题1.①问题具有最优子结构性质;②构造最优值的递归关系表达式;③最优值的算法描述;④构造最优解;2. ①令N1={i|ai<bi},N2={i|ai>=bi};②将N1中作业按ai的非减序排序得到N1’,将N2中作业按bi的非增序排序得到N2’;③N1’中作业接N2’中作业就构成了满足Johnson法则的最优调度;3.步骤为:N1={1,3},N2={2,4};N 1’={1,3}, N2’={4,2};最优值为:384.解空间为{0,0,0,0,1,0,0,0,1,1,0,0,0,1,1,1,0,1, 1,1,0,1,1,1}; 解空间树为:该问题的最优值为:16 最优解为:1,1,0 5.二叉树T 的平均路长P=∑=+ni 1Ci)(1*bi +∑=nj 0dj *aj{mij=0 i>j6.已知一个背包的容量为C,有n 件物品,物品i 的重量为W i ,价值为V i ,求应如何选择装入背包中的物品,使得装入背包中物品的总价值最大; 三、简答题 1.void sortflowjope s,int n {int i,k,j,l;fori=1;i<=n-1;i++ag=0 k++; ifk>n break;ag==0ifsk.a>sj.a k=j; swapsi.index,sk.index; swapsi.tag,sk.tag;} }l=i;<sj.b k=j;swapsi.index,sk.index; ag,sk.tag; }mij=Wij+min{mik+mk+1j} 1<=i<=j<=n,mii-1=0}2.void binarysearchtreeint a,int b,int n,int m,int s,int w{int i,j,k,t,l;fori=1;i<=n+1;i++{wii-1=ai-1;mii-1=0;}forl=0;l<=n-1;l++Init-single-sourceG,s2. S=Φ3. Q=VGQ<> Φdo u=minQS=S∪{u}for each vertex 3do 4四、算法理解题本题10分根据优先队列式分支限界法,求下图中从v1点到v9点的单源最短路径,请画出求得最优解的解空间树;要求中间被舍弃的结点用×标记,获得中间解的结点用单圆圈○框起,最优解用双圆圈◎框起;五、算法理解题本题5分设有n=2k个运动员要进行循环赛,现设计一个满足以下要求的比赛日程表:①每个选手必须与其他n-1名选手比赛各一次;②每个选手一天至多只能赛一次;③循环赛要在最短时间内完成;1如果n=2k,循环赛最少需要进行几天;2当n=23=8时,请画出循环赛日程表;六、算法设计题本题15分分别用贪心算法、动态规划法、回溯法设计0-1背包问题;要求:说明所使用的算法策略;写出算法实现的主要步骤;分析算法的时间;七、算法设计题本题10分通过键盘输入一个高精度的正整数nn的有效位数≤240,去掉其中任意s个数字后,剩下的数字按原左右次序将组成一个新的正整数;编程对给定的n 和s,寻找一种方案,使得剩下的数字组成的新数最小;样例输入178543S=4样例输出13一、填空题本题15分,每小题1分1.规则一系列运算2. 随机存取机RAMRandom Access Machine;随机存取存储程序机RASPRandom Access Stored Program Machine;图灵机Turing Machine3. 算法效率4. 时间、空间、时间复杂度、空间复杂度5.2n6.最好局部最优选择7. 贪心选择最优子结构二、简答题本题25分,每小题5分1、分治法的基本思想是将一个规模为n的问题分解为k个规模较小的子问题,这些子问题互相独立且与原问题相同;对这k个子问题分别求解;如果子问题的规模仍然不够小,则再划分为k个子问题,如此递归的进行下去,直到问题规模足够小,很容易求出其解为止;将求出的小规模的问题的解合并为一个更大规模的问题的解,自底向上逐步求出原来问题的解;2、“最优化原理”用数学化的语言来描述:假设为了解决某一优化问题,需要依次作出n个决策D1,D2,…,Dn,如若这个决策序列是最优的,对于任何一个整数k,1 < k < n,不论前面k个决策是怎样的,以后的最优决策只取决于由前面决策所确定的当前状态,即以后的决策Dk+1,Dk+2,…,Dn也是最优的;3、某个问题的最优解包含着其子问题的最优解;这种性质称为最优子结构性质;4、回溯法的基本思想是在一棵含有问题全部可能解的状态空间树上进行深度优先搜索,解为叶子结点;搜索过程中,每到达一个结点时,则判断该结点为根的子树是否含有问题的解,如果可以确定该子树中不含有问题的解,则放弃对该子树的搜索,退回到上层父结点,继续下一步深度优先搜索过程;在回溯法中,并不是先构造出整棵状态空间树,再进行搜索,而是在搜索过程,逐步构造出状态空间树,即边搜索,边构造;5、PPolynomial问题:也即是多项式复杂程度的问题;NP就是Non-deterministicPolynomial的问题,也即是多项式复杂程度的非确定性问题;NPCNP Complete问题,这种问题只有把解域里面的所有可能都穷举了之后才能得出答案,这样的问题是NP里面最难的问题,这种问题就是NPC问题;三、算法填空本题20分,每小题5分1、n后问题回溯算法1 Mj&&Li+j&&Ri-j+N2 Mj=Li+j=Ri-j+N=1;3 tryi+1,M,L,R,A4 Aij=05 Mj=Li+j=Ri-j+N=0 2、数塔问题; 1c<=r2trc+=tr+1c 3trc+=tr+1c+1 3、Hanoi 算法 1movea,c2Hanoin-1, a, c , b 3Movea,c 4、1pv=NIL 2pv=u3 v ∈adju 4Relaxu,v,w四、算法理解题本题10分五、18天2分;2当n=23=8时,循环赛日程表3分;六、算法设计题本题15分 1贪心算法 Onlogn ➢ 首先计算每种物品单位重量的价值Vi/Wi,然后,依贪心选择策略,将尽可能多的单位重量价值最高的物品装入背包;若将这种物品全部装入背包后,背包内的物品总重量未超过C,则选择单位重量价值次高的物品并尽可能多地装入背包;依此策略一直地进行下去,直到背包装满为止; ➢ 具体算法可描述如下:void Knapsackint n,float M,float v,float w,float x {Sortn,v,w; int i;for i=1;i<=n;i++ xi=0; float c=M;for i=1;i<=n;i++ {if wi>c break; xi=1; c-=wi; }if i<=n xi=c/wi; }2动态规划法 Oncmi,j 是背包容量为j,可选择物品为i,i+1,…,n 时0-1背包问题的最优值;由0-1背包问题的最优子结构性质,可以建立计算mi,j 的递归式如下;void KnapSackint v,int w,int c,int n,int m11 {int jMax=minwn-1,c;for j=0;j<=jMax;j++ /mn,j=0 0=<j<wn/ mnj=0;1 2 3 4 5 6 7 82 1 43 6 5 8 73 4 1 2 7 8 5 64 3 2 1 8 7 6 55 6 7 8 1 2 3 4 6 5 8 7 2 1 4 37 8 5 6 3 4 1 28 7 6 5 4 3 2 1for j=wn;j<=c;j++ /mn,j=vn j>=wn/mnj=vn;for i=n-1;i>1;i--{ int jMax=minwi-1,c;for j=0;j<=jMax;j++ /mi,j=mi+1,j 0=<j<wi/mij=mi+1j;for j=wi;j<=c;j++/mn,j=vn j>=wn/mij=maxmi+1j,mi+1j-wi+vi;}m1c=m2c;ifc>=w1m1c=maxm1c,m2c-w1+v1;}3回溯法 O2ncw:当前重量 cp:当前价值 bestp:当前最优值voidbacktrack int i//回溯法 i初值1{ifi>n //到达叶结点{ bestp=cp; return; }ifcw+wi<=c //搜索左子树{cw+=wi;cp+=pi;backtracki+1;cw-=wi;cp-=pi;}ifBoundi+1>bestp//搜索右子树backtracki+1;}七、算法设计题本题10分为了尽可能地逼近目标,我们选取的贪心策略为:每一步总是选择一个使剩下的数最小的数字删去,即按高位到低位的顺序搜索,若各位数字递增,则删除最后一个数字,否则删除第一个递减区间的首字符;然后回到串首,按上述规则再删除下一个数字;重复以上过程s次,剩下的数字串便是问题的解了;具体算法如下:输入s, n;while s > 0{ i=1; //从串首开始找while i < lengthn && ni<ni+1{i++;}deleten,i,1; //删除字符串n的第i个字符s--;}while lengthn>1&& n1=‘0’deleten,1,1; //删去串首可能产生的无用零输出n;。

高级算法期末试题及答案

高级算法期末试题及答案一、选择题(每题5分,共20分)1. 下列算法中,时间复杂度为O(nlogn)的是:A. 冒泡排序B. 快速排序C. 插入排序D. 选择排序答案:B2. 在图论中,用于寻找最短路径的算法是:A. 深度优先搜索(DFS)B. 广度优先搜索(BFS)C. 迪杰斯特拉算法(Dijkstra)D. 弗洛伊德算法(Floyd)答案:C3. 动态规划算法通常用于解决:A. 排序问题B. 搜索问题C. 计数问题D. 优化问题答案:D4. 哈希表的平均查找时间复杂度是:A. O(n)B. O(logn)C. O(1)D. O(n^2)答案:C二、填空题(每题5分,共20分)1. 在二叉树的遍历算法中,______ 遍历会访问根节点两次。

答案:后序2. 如果一个算法的时间复杂度是O(n^2),那么它的执行时间会随着输入规模的增大而______。

答案:平方增长3. 在设计算法时,通常使用______ 来表示算法的执行时间与输入规模之间的关系。

答案:时间复杂度4. 贪心算法是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是全局最好或最优的算法,其特点是每一步都做出______。

答案:局部最优选择三、简答题(每题10分,共30分)1. 请简述快速排序算法的工作原理。

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

它通过一个称为“基准”的元素将数组分为两部分,使得左边的元素都不大于基准,右边的元素都不小于基准。

然后递归地对左右两部分进行快速排序,直到数组完全有序。

2. 什么是动态规划算法?请给出一个例子。

答案:动态规划是一种算法策略,它将复杂问题分解为一系列重叠的子问题,通过解决子问题并存储其结果来避免重复计算,从而提高效率。

例如,斐波那契数列的计算就是一个经典的动态规划问题。

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

答案:时间复杂度是描述算法运行时间与输入规模之间关系的量度。

算法与数据结构试题及答案

算法与数据结构的试题及其答案:一、判断题1. 线性表的逻辑顺序与物理顺序总是一致的。

()2. 线性表的顺序存储表示优于链式存储表示。

()3. 线性表若采用链式存储表示时所有结点之间的存储单元地址可连续可不连续。

()4. 二维数组是其数组元素为线性表的线性表。

()5. 每种数据结构都应具备三种基本运算:插入、删除和搜索。

()二、单选题6. 在快速排序的一趟划分过程中,当遇到与基准数相等的元素时,如果左右指针都不停止移动,那么当所有元素都相等时,算法的时间复杂度是多少?A. O(NlogN)B. O(N)C. O(N^2)D. O(logN)7. 一棵有1001个结点的完全二叉树,其叶子结点数为:B. 250C. 501D. 5008. 对于一个具有N个顶点的无向图,若采用邻接矩阵表示,则该矩阵的大小是:A. (N-1)^2B. NC. N^2D. N-19. 在KMP算法下,长为n的字符串匹配长度为m的字串的时间复杂度为:A. O(N)B. O(M+LOGN)C. O(M+N)D. O(N+LOGM)10. 若AVL树的深度是6(空树的深度定义为-1),则该树的最少结点数是:A. 13C. 20D. 33答案一、判断题1. ×(线性表的逻辑顺序与物理顺序不一定一致,特别是在链式存储结构中)2. ×(线性表的顺序存储表示和链式存储表示各有优缺点,不能简单地说哪一种更优)3. √(链式存储结构不要求存储单元连续)4. ×(二维数组是线性表的推广,但其元素不是线性表,而是基本数据类型)5. ×(并非每种数据结构都具备这三种基本运算,例如队列通常只支持入队和出队操作)二、单选题6. B(当所有元素都相等时,划分过程将每次都将一个元素与基准数比较,共需N次比较)7. C(完全二叉树的叶子结点数为(N+1)/2向下取整,当N=1001时,(1001+1)/2=501)8. C(N个顶点的无向图的邻接矩阵大小为N×N)9. C(KMP算法的时间复杂度为O(M+N),其中M和N分别为两个字符串的长度)10. D(AVL树是平衡二叉树,深度为6时,最少结点数为斐波那契数列的第7项,即13, 21, 34, 55, 89, 144, 233中的233,但考虑到空树的深度为-1,所以实际结点数为233-1=232的斐波那契数列前几项之和,计算后得33)三、简答题11. 解释什么是哈希函数,并给出一个简单的哈希函数示例。

算法设计与分析试卷试题(A)(附答案)

chengcheng算法分析考试试卷(A卷)课程名称算法分析编号题号一二三四总分得分评阅人一、填空题(每小题3分,共30分)1、一个算法的优劣可以用空间复杂度与时间复杂度来衡量。

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

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

4、 记号在算法复杂性的表示法中表示紧致界。

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

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

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

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

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

9、贪心算法从初始阶段开始,每一个阶段总是作一个使局部最优的贪心选择。

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

二、选择题(每小题2分,共20分)1、哈夫曼编码可利用( C )算法实现。

A、分治策略B、动态规划法C、贪心法D、回溯法2、下列不是基本计算模型的是( B )。

A、RAMB、ROMC、RASPD、TM3、下列算法中通常以自顶向下的方式求解最优解的是( C)。

A、分治法B、动态规划法C、贪心法D、回溯法chengcheng 4、在对问题的解空间树进行搜索的方法中,一个活结点有多次机会成为活结点的是( A )A、回溯法B、分支限界法C、回溯法和分支限界法D、动态规划5、秦始皇吞并六国使用的远交近攻,逐个击破的连横策略采用了以下哪种算法思想? BA、递归;B、分治;C、迭代;D、模拟。

6、FIFO是( A )的一搜索方式。

A、分支界限法B、动态规划法C、贪心法D、回溯法7、投点法是( B )的一种。

A、分支界限算法B、概率算法C、贪心算法D、回溯算法8、若线性规划问题存在最优解,它一定不在( C )A.可行域的某个顶点上 B.可行域的某条边上 C.可行域内部 D.以上都不对9、在一般输入数据的程序里,输入多多少少会影响到算法的计算复杂度,为了消除这种影响可用( B )对输入进行预处理。

计算机算法试题(含答案)

算法设计与分析试卷一、填空题(20分,每空2分)1、算法的性质包括输入、输出、___、有限性。

2、动态规划算法的基本思想就将待求问题_____、先求解子问题,然后从这些子问题的解得到原问题的解。

3、设计动态规划算法的4个步骤:(1)找出____,并刻画其结构特征。

(2)_______。

(3)_______。

(4)根据计算最优值得到的信息,_______。

4、流水作业调度问题的johnson算法:(1)令N1=___,N2={i|ai>=bj};(2)将N1中作业依ai的___。

5、对于流水作业高度问题,必存在一个最优调度π,使得作业π(i)和π(i+1)满足Johnson不等式_____。

6、最优二叉搜索树即是___的二叉搜索树。

二、综合题(50分)1、当(a1,a2,a3,a4,a5,a6)=(-2,11,-4,13,-5,-2)时,最大子段和为∑ak(2<=k<=4)____(5分)2、由流水作业调度问题的最优子结构性质可知,T(N,0)=______(5分)3、最大子段和问题的简单算法(10分)int maxsum(int n,int *a,int & bestj){intsum=0;for (int i=1;i<=n;i++)for (int j=i;j<=n;j++)int thissum=0;for(int k=i;k<=j;k++)_____;if(thissum>sum){sum=thissum;______;bestj=j;}}return sum;}4、设计最优二叉搜索树问题的动态规划算法OptimalBinarysearchTree? (15分)Void OptimalBinarysearchTree(int a,int n,int * * m, int * * w) {for(int i=0;i<=n;i++) {w[i+1][i]=a[i]; m[i+1][i]=____;} for(int r=0;r<n;r++)for(int i=1;i<=n-r;i++){int j=i+r;w[i][j]=w[i][j-1]+a[j]+b[j];m[i][j]=______;s[i][j]=i;for(int k=i+1;k<=j;k++){int t=m[i][k-1]+m[k+1][j];if(_____) {m[i][j]=t; s[i][j]=k;}}m[i][j]=t; s[i][j]=k;}}5、设n=4, (a1,a2,a3,a4)=(3,4,8,10), (b1,b2,b3,b4)=(6,2,9,15) 用两种方法求4个作业的最优调度方案并计算其最优值?(15分)三、简答题(30分)1、将所给定序列a[1:n]分为长度相等的两段a[1:n/2]和a[n/2+1:n],分别求出这两段的最大子段和,则a[1:n]的最大子段和有哪三种情形?(10分)答:2、由0——1背包问题的最优子结构性质,可以对m(i,j)建立怎样的递归式? (10分)3、0——1背包求最优值的步骤分为哪几步?(10分)参考答案:填空题:确定性分解成若干个子问题最优解的性质递归地定义最优值以自底向上的方式计算出最优值构造最优解{i|ai<bi} ai的非减序排序;将N2中作业依bi的非增序排序min{bπ(i),aπ(i+1)}≥min{bπ(i+1),aπ(i)}最小平均查找长度综合题:20 min{ai+T(N-{i},bi)}(1=<i<=n) thissum+=a[k] besti=i 0 m[i+1][j] t<m[i][j]法一:min(ai,bj)<=min(aj,bi)因为min(a1,b2)<=min(a2,b1)所以1→2 (先1后2)由min(a1,b3)<=min(a3,b1)得1→3 (先1后3)同理可得:最后为1→3→4→2法二:johnson算法思想N1={1,3,4} N2={2}N¹1={1,3,4} N¹2={2}所以 N¹1→N¹2得:1→3→4→2简答题:1 、(1)a[1:n]的最大子段和与a[1:n/2]的最大子段和相同。

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