2009.1算法设计与分析课程期末试卷-A卷(含答案)

合集下载

算法设计与分析 期末试卷 A卷(完整含答案)

算法设计与分析 期末试卷 A卷(完整含答案)
参考解答:若字符 a~h 出现的频率恰好是前 8 个 Fibonacci 数,它们的 Haffman 编码树如下图所示。
4
0 0 0 0 0 0 0 a 1 b 1 c 1 d 1 e 1 f 1
装 订 线
考试科目: 考试时间: 年级专业 三(16) 四(24)
算法设计与分析 120 分钟
姓名 一(20) 二(25)
五(15)
总分
得分 评阅人
说明: (1)请勿漏填学号姓名等信息。本试卷仅一份,请将答案直接填于试卷上,莫将试卷当草稿,想好了再 写,若空白的位置不够,标注清楚后可以写反面; (2)答题时,对算法的描述可以采用文字、公式、图、伪代码、实例说明等混合形式。请注意表达应条 理清晰,思想简洁,勿长篇累述不得要领。
后续n-i个元素比较并判定是否逐个插入堆, 最坏情况为 O(( n i ) log i ) , 最后对i个堆中元素逐个输出堆顶 元素需要 O(i log i ) ,合计后略去低阶项为 O(n log i ) 。
得分 二、简答题(共5小题,每题5分,共25分) 1、请将下列函数的阶按上升顺序排列。 (5分)
算法 1 Loop1(n) s=0; for(i=1;i<=n;i++) for(j=1;j<=i;j++) s=s+i*j;
算法1:O(
);
算法 2 Loop2(n) s=0; for(i=1;i<=n2;i++) for(j=1;j<=n;j++) s=s+i*j;
算法2:O(
);
1
算法 3 Loop3(n) s=0; for(i=1;i<=n2;i++) for(j=1;j<=i;j++) s=s+i*j;

算法分析期末试题集答案(6套)

算法分析期末试题集答案(6套)

内部资料,转载请注明出处,谢谢合作。

《算法分析与设计》期末复习题(一)一、选择题1.应用Johnson 法则的流水作业调度采用的算法是(D )A. 贪心算法B. 分支限界法C.分治法D. 动态规划算法2.Hanoi 塔问题如下图所示。

现要求将塔座A 上的的所有圆盘移到塔座B 上,并仍按同样顺序叠置。

移动圆盘时遵守Hanoi 塔问题的移动规则。

由此设计出解Hanoi 塔问题的递归算法正确的为:(B ) Hanoi 塔3. 动态规划算法的基本要素为(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. O(f(n))+O(g(n)) = O(min{f(n),g(n)})D. f(n)O(g(n))g(n)O(f(n))=⇔=6. 能采用贪心算法求最优解的问题,一般具有的重要性质为:(A )A. 最优子结构性质与贪心选择性质 B .重叠子问题性质与贪心选择性质 C .最优子结构性质与重叠子问题性质 D. 预排序与递归调用7. 回溯法在问题的解空间树中,按(D )策略,从根结点出发搜索解空间树。

A . 广度优先 B. 活结点优先 C.扩展结点优先 D. 深度优先8. 分支限界法在问题的解空间树中,按(A )策略,从根结点出发搜索解空间树。

A . 广度优先 B. 活结点优先 C.扩展结点优先 D. 深度优先9. 程序块(A )是回溯法中遍历排列树的算法框架程序。

A. B.C.D.10. 回溯法的效率不依赖于以下哪一个因素?(C )A.产生x[k]的时间;B.满足显约束的x[k]值的个数;C.问题的解空间的形式;D.计算上界函数bound的时间;E.满足约束函数和上界函数约束的所有x[k]的个数。

算法设计与分析期末试卷A卷

算法设计与分析期末试卷A卷

算法设计与分析期末试卷A卷一、选择题1.二分搜索算法是利用(A)实现的算法。

A、分治策略B、动态规划法C、贪心法D、回溯法解析:二分搜索是一种基于分治策略的算法。

2.回溯法解旅行售货员问题时的解空间树是(A)。

A、子集树B、排列树C、深度优先生成树D、广度优先生成树解析:旅行售货员问题的解空间树是子集树,因为每个结点代表一个城市的集合。

3.下列算法中通常以自底向上的方式求解最优解的是(B)。

A、备忘录法B、动态规划法C、贪心法D、回溯法解析:动态规划法通常以自底向上的方式求解最优解。

4.下面不是分支界限法搜索方式的是(D)。

A、广度优先B、最小耗费优先C、最大效益优先D、深度优先解析:分支界限法搜索方式包括广度优先、最小耗费优先和最大效益优先,但不包括深度优先。

5.采用贪心算法的最优装载问题的主要计算量在于将集装箱依其重量从小到大排序,故算法的时间复杂度为(B)。

A、O(n2n)B、O(nlogn)C、O(2n)D、O(n)解析:最优装载问题采用贪心算法的主要计算量在于将集装箱依其重量从小到大排序,因此时间复杂度为O(nlogn)。

6.分支限界法解最大团问题时,活结点表的组织形式是(B)。

A、最小堆B、最大堆C、栈D、数组解析:分支限界法解最大团问题时,活结点表的组织形式是最大堆。

7、下面问题(B)不能使用贪心法解决。

A 单源最短路径问题C 最小花费生成树问题B N皇后问题D 背包问题解析:N皇后问题不能使用贪心法解决。

8.下列算法中不能解决0/1背包问题的是(A)A 贪心法B 动态规划C 回溯法D 分支限界法解析:贪心法不能解决0/1背包问题。

9.背包问题的贪心算法所需的计算时间为(B)A、O(n2n)B、O(nlogn)C、O(2n)D、O(n)解析:背包问题的贪心算法所需的计算时间为O (nlogn)。

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

2.算法是由若干条指令组成的有穷序列,且要满足输入、输出、确定性和有穷性四条性质。

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

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

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

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

不存在二义性。

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

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

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

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

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

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

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

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

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

二、建立迭代关系式。

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

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

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

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

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

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

算法设计与分析历年期末试题整理_含答案_

算法设计与分析历年期末试题整理_含答案_

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

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

不存在二义性。

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

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

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

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

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

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

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

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

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

二、建立迭代关系式。

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

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

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

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

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

《算法设计与分析》考试题目及答案(DOC)

《算法设计与分析》考试题目及答案(DOC)
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))
6. 能采用贪心算法求最优解的问题,一般具有的重要性质为:(A) A. 最优子结构性质与贪心选择性质 B.重叠子问题性质与贪心选择性质
3. 所谓贪心选择性质是指(所求问题的整体最优解可以通过一系列局部最 优的选择,即贪心选择来达到)。
4. 所谓最优子结构性质是指(问题的最优解包含了其子问题的最优解)。 5. 回溯法是指(具有限界函数的深度优先生成法)。 6. 用回溯法解题的一个显著特征是在搜索过程中动态产生问题的解空间。在任 何时刻,算法只保存从根结点到当前扩展结点的路径。如果解空间树 中 从根结点到叶结点的最长路径的长度为 h(n),则回溯法所需的计算空间通 常为(O(h(n)))。 7. 回溯法的算法框架按照问题的解空间一般分为(子集树)算法框架与
12. 用回溯法解图} 的 m 着色问题时,使用下面的函数 OK 检查当前扩展结点的
每一个儿子所相应的颜色的可用性,则需耗时(渐进时间上限)(O(mn))。
Bool Color::OK(int k) {//
for(int j=1;j<=n;j++) if((a[k][j]= =1)&&(x[j]= =x[k])) return false;
f(n)个单位时间。用 T(n)表示该分治法解规模为|P|=n 的问题所需的计算时
间,则有:T (n)

kT (n
O(1) / m)
f
(n)
n 1 n 1

2009.1算法设计与分析课程期末试卷-A卷(含答案)

2009.1算法设计与分析课程期末试卷-A卷(含答案)

2009.1算法设计与分析课程期末试卷-A卷(含答案)华南农业大学期末考试试卷(A卷)2008学年第一学期考试科目:算法分析与设计考试类型:(闭卷)考试时间:120分钟学号姓名年级专业一、选择题(20分,每题2分)1.下述表达不正确的是。

DA.n2/2 + 2n的渐进表达式上界函数是O(2n)B.n2/2 + 2n的渐进表达式下界函数是Ω(2n)C.logn3的渐进表达式上界函数是O(logn)D.logn3的渐进表达式下界函数是Ω(n3)2.当输入规模为n时,算法增长率最大的是。

AA.5n B.20log2n C.2n2D.3nlog3n3.T(n)表示当输入规模为n时的算法效率,以下算法效率最优的是。

C A.T(n)= T(n – 1)+1,T(1)=1 B.T(n)= 2n2 C.T(n)= T(n/2)+1,T(1)=1 D.T(n)= 3nlog2n4.在棋盘覆盖问题中,对于2k×2k的特殊棋盘(有一个特殊方块),所需的L型骨牌的个数是。

AA.(4k– 1)/3 B.2k /3 C.4k D.2k5.在寻找n个元素中第k小元素问题中,若使用快速排序算法思想,运用分治算法对n个元素进行划分,应如何选择划分基准?下面答案解释最合理。

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

但不同方法,算法复杂度上界可能不同6.有9个村庄,其坐标位置如下表所示:个村庄服务,请问邮局应该盖在才能使到邮局到这9个村庄的总距离和最短。

CA.(4.5,0)B.(4.5,4.5)C.(5,5)D.(5,0)7.n个人拎着水桶在一个水龙头前面排队打水,水桶有大有小,水桶必须打满水,水流恒定。

如下说法不正确?AA.让水桶大的人先打水,可以使得每个人排队时间之和最小B.让水桶小的人先打水,可以使得每个人排队时间之和最小C.让水桶小的人先打水,在某个确定的时间t内,可以让尽可能多的人打上水D.若要在尽可能短的时间内,n个人都打完水,按照什么顺序其实都一样8.分治法的设计思想是将一个难以直接解决的大问题分割成规模较小的子问题,分别解决子问题,最后将子问题的解组合起来形成原问题的解。

a标准答案

a标准答案

西北民族大学计算机科学与信息工程学院期末考试算法设计与分析试卷( A 卷)参考答案及评分标准专业: 课程代码:一、填空题(每空 1 分,共 25 分)1.输入,输出,确定性,有限性。

2。

某种程序设计语言的具体实现,有限性,无限循环中。

3.直接,间接,自身。

4.最坏情况,最好情况,平均情况,最坏情况。

5..备忘录方法。

6.深度优先策略,组合数较大。

7.数值概率算法、蒙特卡罗算法、拉斯维加斯算法、舍伍德算法。

8.整体最优考虑,局部最优选择。

9.最优子结构性质,子问题重叠性质。

1、通俗地讲,算法是指解决问题的方法或过程。

严格地讲,算法是满足下述性质的指令序列:(输入)、(输出)、(确定性)(有限性)。

2、程序(program)与算法不同。

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

程序可以不满足算法的(有限性)性质。

例如操作系统,它是在(无限循环中)执行的程序。

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

4、一般情况下,时间复杂度分为(最坏情况)、(最好情况)和(平均情况)。

但实践表明,可操作性最好且最有实际价值的是(最坏情况)下的时间复杂度。

5、动态规划法的变形是(备忘录方法)。

6、回溯法在问题的解空间树中,按(深度优先策略),它适用于求解(组合数较大)的问题。

7、概率算法可分为:(数值概率)算法、(蒙特卡罗)算法、(拉斯维加斯)算法、(舍伍德)算法。

8、贪心算法并不从(整体最优考虑)考虑,它所做出的选择只是在某种意义上的(局部最优选择)。

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

二、证明简答(共4题35分)1、合并排序的基本思想什么?递归的描述它的算法。

(10分)合并排序算法是用分治策略实现对n个元素进行排序的算法。

思想:将待排序元素分成大小大致相同的2个子集合,分别对2个子集合进行排序,最终将排好序的子集合合并成为所要求的排好序的集合。

合并排序算法可递归地描述:Public static void mergesort(comparable a[],int left,int right){If (left <right)Int i=(left+right)/2;Mergesort(a,left,i);Mergesort(a,i+1,right);Mergesort(a,b,left,i,right);Copy(a,b,left,right);}}2、二分搜索算法的基本思想是什么?描述它的算法,并讨论时间复杂性。

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

华南农业大学期末考试试卷(A卷)2008学年第一学期考试科目:算法分析与设计考试类型:(闭卷)考试时间:120分钟学号姓名年级专业一、选择题(20分,每题2分)1.下述表达不正确的是。

DA.n2/2 + 2n的渐进表达式上界函数是O(2n)B.n2/2 + 2n的渐进表达式下界函数是Ω(2n)C.logn3的渐进表达式上界函数是O(logn)D.logn3的渐进表达式下界函数是Ω(n3)2.当输入规模为n时,算法增长率最大的是。

AA.5n B.20log2n C.2n2D.3nlog3n3.T(n)表示当输入规模为n时的算法效率,以下算法效率最优的是。

C A.T(n)= T(n – 1)+1,T(1)=1 B.T(n)= 2n2C.T(n)= T(n/2)+1,T(1)=1 D.T(n)= 3nlog2n4.在棋盘覆盖问题中,对于2k×2k的特殊棋盘(有一个特殊方块),所需的L型骨牌的个数是。

AA.(4k– 1)/3 B.2k /3 C.4k D.2k5.在寻找n个元素中第k小元素问题中,若使用快速排序算法思想,运用分治算法对n个元素进行划分,应如何选择划分基准?下面答案解释最合理。

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

但不同方法,算法复杂度上界可能不同6.现在要盖一所邮局为这9个村庄服务,请问邮局应该盖在才能使到邮局到这9个村庄的总距离和最短。

CA.(4.5,0)B.(4.5,4.5)C.(5,5)D.(5,0)7.n个人拎着水桶在一个水龙头前面排队打水,水桶有大有小,水桶必须打满水,水流恒定。

如下说法不正确?AA.让水桶大的人先打水,可以使得每个人排队时间之和最小B.让水桶小的人先打水,可以使得每个人排队时间之和最小C.让水桶小的人先打水,在某个确定的时间t内,可以让尽可能多的人打上水D.若要在尽可能短的时间内,n个人都打完水,按照什么顺序其实都一样8.分治法的设计思想是将一个难以直接解决的大问题分割成规模较小的子问题,分别解决子问题,最后将子问题的解组合起来形成原问题的解。

这要求原问题和子问题。

CA.问题规模相同,问题性质相同B.问题规模相同,问题性质不同C.问题规模不同,问题性质相同D.问题规模不同,问题性质不同9.对布线问题,以下是不正确描述。

CA.布线问题的解空间是一个图B.可以对方格阵列四周设置围墙,即增设标记的附加方格的预处理,使得算法简化对边界的判定C.采用广度优先的标号法找到从起点到终点的布线方案(这个方案如果存在的话)不一定是最短的D.采用先入先出的队列作为活结点表,以终点b为扩展结点或活结点队列为空作为算法结束条件10.对于含有n个元素的子集树问题,最坏情况下其解空间的叶结点数目为。

BA .n!B .2nC .2n+1-1 D .∑=ni i n 1!/!二、填空题(10分,每题2分)1、一个算法复杂性的高低体现在计算机运行该算法所需的时间和存储器资源上,因此算法的复杂性有 复杂性和空间复杂性之分。

参考解答:时间2、出自于“平衡子问题”的思想,通常分治法在分割原问题,形成若干子问题时,这些子问题的规模都大致 。

参考解答:相同3、使用二分搜索算法在n 个有序元素表中搜索一个特定元素,在最佳情况下,搜索的时间复杂性为O ( ),在最坏情况下,搜索的时间复杂性为O ( )。

参考解答:1 logn4、已知一个分治算法耗费的计算时间T(n),T(n)满足如下递归方程:⎩⎨⎧≥+<=22221n n O n T n O n T )()/()()( 解得此递归方可得T(n)= O ( )。

参考解答:log n n5、动态规划算法有一个变形方法 。

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

参考解答:备忘录方法三、简答题(40分,每题8分)1、(8分)写出下列复杂性函数的偏序关系(即按照渐进阶从低到高排序):2323log !log 10nn n n n n n n n参考解答:3210log log 23!n n n n n n n n n2、(8分)现在有8位运动员要进行网球循环赛,要设计一个满足以下要求的比赛日程表:(1)每个选手必须与其他选手各赛一次;(2)每个选手一天只能赛一次;(3)循环赛一共进行n – 1天。

请利用分治法的思想,给这8位运动员设计一个合理的比赛日程。

参考解答:3、(8分)某体育馆有一羽毛球场出租,现在总共有10位客户申请租用此羽毛球场,每个客户所租用的时间单元如下表所示,s(i)表示开始租用时刻,f(i)表示结束租用时刻,10个客户的申请如下表所示:位客户里面,使得体育馆能尽可能满足多位客户的需求,并算出针对上表的10个客户申请,最多可以安排几位客户申请。

参考解答:将这10位客户的申请按照结束时间f(i)递增排序,如下表:1)选择申请1(1,4)2)依次检查后续客户申请,只要与已选择的申请相容不冲突,则选择该申请。

直到所有申请检查完毕。

申请4(5,7)、申请8(8,11)、申请10(11,13)3)最后,可以满足:申请1(1,4)、申请4(5,7)、申请8(8,11)、申请10(11,13)共4个客户申请。

这已经是可以满足的最大客户人数。

4、(8分)对于矩阵连乘所需最少数乘次数问题,其递归关系式为:1i k j0[,]min{[,][1,]}i k j i j m i j m i k m k j p p p i j -≤<=⎧⎪=⎨+++<⎪⎩ 其中m[i ,j]为计算矩阵连乘Ai …Aj 所需的最少数乘次数,p i-1为矩阵Ai 的行,i p 为矩阵Ai 的列。

现有四个矩阵,其中各矩阵维数分别为:请根据以上的递归关系,计算出矩阵连乘积A 1A 2A 3A 4所需要的最少数乘次数。

参考解答:014024034[1][1][2][4]080005010510500[1][4]min [1][2][3][4]2000060005040536000[1][3][4][4]270000503053450010500m m p p p m m m p p p m m p p p ++=++⨯⨯=⎧⎪=++=++⨯⨯=⎨⎪++=++⨯⨯=⎩=5、(8分)有这样一类特殊0-1背包问题:可选物品重量越轻的物品价值越高。

n=6,c=20,P=(4,8,15,1,6,3),W=(5,3,2,10,4,8)。

其中n 为物品个数,c 为背包载重量,P 表示物品的价值,W 表示物品的重量。

请问对于此0-1背包问题,应如何选择放进去的物品,才能使到放进背包的物品总价值最大,能获得的最大总价值多少?参考解答:因为该0-1背包问题比较特殊,恰好重量越轻的物品价值越高,所以优先取重量轻的物品放进背包。

最终可以把重量分别为2,3,4,5的三个物品放进背包,得到的价值和为15 + 8 + 6 + 4 = 33,为最大值。

四、算法设计题(30分,前三题每题8分,最后一题6分)1、【最优服务次序问题】(8分)—— 提示:此题可采用贪心算法实现问题描述:设有n 个顾客同时等待一项服务,顾客i 需要的服务时间为ti ,1<=i<=n 。

应该如何安排n 个顾客的服务次序才能使平均等待时间达到最小?(平均等待时间是n 个顾客等待服务时间的总和除以n )。

参考解答:贪心策略:最短服务时间优先。

将n个顾客的服务时间ti按照由小到大排序,n个顾客的服务调度方案即为排序后的顺序,即可使得平均等待时间最小。

评分准则:1)答到使用贪心算法,并且说明贪心的策略是短服务优先,本题即可得满分;2)仅说明使用贪心算法,但未说明贪心策略,答题不完整,扣2分以上;3)其它情况酌情考虑。

2、【Gray码构造问题】(8分)——提示:此题可采用分治递归算法实现问题描述:“格雷码”是一个长度为n2的序列,满足:(a)每个元素都是长度为n比特的串(b)序列中无相同元素(c)连续的两个元素恰好只有1个比特不同例如:n=2时,格雷码为{00,01,11,10}。

Gray码是一种编码,这种编码可以避免在读取时,因各数据位时序上的差异造成的误读。

格雷码在工程上有广泛应用。

但格雷码不便于运算,请你设计一种构造方法,输入长度序列n,输出格雷码(你只要做出一种构造方案即可,格雷码并不唯一)。

参考解答:此题可用分治法解决。

当n=1时,输出格雷码{0, 1}当n>1时,格雷码的长度为n2,即共有n2个码序列。

此时,将问题一分为二,即上半部分和下半部分。

上半部分最高位设为0,下半部分最高位设为1。

剩下n-1位的格雷码的构造采用递归的思路。

评分准则:1)答到使用分治算法,并且推导出分治算法的过程,边界设定清晰(即当仅输出1位的格雷码如何处理),本题即可得满分;2)说明使用分治算法,但漏边界条件,扣2分以上;3)其它情况酌情考虑。

3、【最长上升子序列问题】(8分)——提示:此题可采用动态规划算法实现对于给定的一个序列12(,,,)N a a a ,11000N ≤≤。

我们可以得到一些递增上升的子序列12(,,,)i i iK a a a ,这里121K i i i N ≤<<<≤ 。

比如,对于序列(1, 7, 3, 5, 9, 4, 8),有它的一些上升子序列,如(1, 7), (3, 4, 8)等等。

这些子序列中最长的长度是4,比如子序列(1, 3, 5, 8)。

你的任务:就是对于给定的序列,求出最长上升子序列的长度。

要求写出你设计的算法思想及递推函数的公式表达。

参考解答:设()f i 表示:从左向右扫描过来直到以[]a i 元素结尾的序列,获得的最长上升子序列的长度,且子序列包含[]a i 元素(1i n ≤≤)。

11()max{()1:[][];1}111;(1)[][]i f i f j a i a j j i i i j j i a i a j =⎧⎪=+>≤<>⎨⎪>∀≤<<=⎩当,都有即,()f i 是从(1)f ,(2)f ……到(1)f i -中找最大的一个值,再加1。

或者就是1。

主要是看a[i]这个元素能否加入到之前已经获得的最长上升子序列,如果能加入,是之前已获得的最长上升子序列长度加一;如果不能加入,就取这最后一个元素作为一个单独子序列,长度为1。

最后,所要求的整个序列的最长公共子序列长度为max{f(i): 1<=i<=n}评分准则:1) 答到使用动态规划算法,并且推导出动态规划算法的递推函数公式表达,边界设定清晰,本题即可得满分;(阅卷时仔细看递推公式表达,公式表达含义正确即可,因其表达形式可能不唯一)2) 说明使用动态规划算法,但对递推函数表达错误或含糊,扣2分以上; 3) 其它情况酌情考虑。

相关文档
最新文档