计算机算法设计与分析期末复习资料

合集下载

算法设计与分析复习题

算法设计与分析复习题

算法设计与分析复习题算法设计与分析是计算机科学中的一个重要领域,它涉及到如何高效地解决计算问题。

以下是一些复习题,可以帮助学生更好地理解和掌握算法设计与分析的基本概念和技巧。

1. 算法的基本概念:- 什么是算法?请列举算法的基本特性。

- 解释算法的时间复杂度和空间复杂度,并给出一个例子。

2. 算法设计策略:- 描述贪心算法的工作原理,并给出一个实际问题的例子。

- 解释分治算法的基本步骤,并用快速排序算法来说明。

3. 排序算法:- 比较选择排序、插入排序和冒泡排序的时间复杂度。

- 描述归并排序和快速排序的工作原理,并讨论它们的优缺点。

4. 搜索算法:- 解释线性搜索和二分搜索的区别。

- 描述哈希表的工作原理,并讨论其在搜索算法中的应用。

5. 图算法:- 解释深度优先搜索(DFS)和广度优先搜索(BFS)的工作原理。

- 描述迪杰斯特拉(Dijkstra)算法和贝尔曼-福特(Bellman-Ford)算法,并比较它们的使用场景。

6. 动态规划:- 解释动态规划与分治法的区别。

- 给出一个动态规划解决的问题,并描述其解决方案。

7. 复杂度分析:- 什么是大O记号、大Ω记号和大Θ记号?它们如何帮助我们分析算法的效率?- 给出一个算法,并使用大O记号来分析其时间复杂度。

8. 算法优化:- 描述一些常见的算法优化技巧,例如空间换时间或时间换空间。

- 讨论算法优化在实际应用中的重要性。

9. 算法应用:- 举例说明算法在不同领域的应用,如在网络路由、机器学习或数据压缩中。

10. 算法的局限性:- 讨论算法在解决特定问题时可能遇到的局限性。

- 解释为什么某些问题被认为是不可解的或计算上不可行的。

结束语:通过这些复习题的练习,学生应该能够加深对算法设计与分析的理解,掌握不同算法的原理和应用场景,以及如何评估和优化算法的性能。

希望这些题目能够帮助学生在考试或实际工作中更加自信和高效。

!算法设计与分析总复习

!算法设计与分析总复习

!算法设计与分析总复习算法设计与分析是计算机科学中非常重要的一个领域,它涉及到了算法的设计、性能分析和优化等方面。

在准备考试之前,我们需要对算法设计与分析的基本概念和常用算法进行全面复习。

一、算法设计与分析基本概念1.算法的定义:算法是一系列解决特定问题的有限步骤。

2.算法的特性:算法具有明确性、有限性、确定性和输入/输出。

3.算法的正确性:算法必须能够解决问题,并得到正确的答案。

4.算法的效率:算法的时间复杂度和空间复杂度是衡量算法效率的重要指标。

二、常用算法1.排序算法:常见的排序算法包括冒泡排序、插入排序、选择排序、快速排序、归并排序等。

需要了解每种排序算法的思想、时间复杂度和空间复杂度,并能够对其进行实现和优化。

2.查找算法:常用的查找算法包括顺序查找、二分查找、哈希查找等。

需要了解每种查找算法的思想和时间复杂度,并能够对其进行实现和应用。

3. 图算法:图算法包括深度优先(DFS)、广度优先(BFS)、最短路径算法(Dijkstra算法、Floyd算法)等。

需要了解这些算法的思想、时间复杂度和应用场景,并能够对其进行实现和应用。

4.动态规划算法:动态规划算法适用于具有重叠子问题和具有最优子结构性质的问题。

需要了解动态规划算法的基本思想、时间复杂度和应用场景,并能够对具体问题进行动态规划的设计和实现。

5.贪心算法:贪心算法常用于解决最优化问题,每一步都选择当前最优解,以期最终达到全局最优解。

需要了解贪心算法的基本思想、时间复杂度和应用场景,并能够对具体问题进行贪心算法的设计和实现。

三、算法的时间复杂度和空间复杂度1. 时间复杂度:算法的时间复杂度表示算法的执行时间和输入数据规模之间的关系。

常见的时间复杂度有O(1)、O(logn)、O(n)、O(nlogn)、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 )。

计算机算法设计与分析复习题与答案1

计算机算法设计与分析复习题与答案1

《算法分析与设计》期末复习题(一)一、选择题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]的个数。

算法设计与分析复习要点

算法设计与分析复习要点

算法设计与分析的复习要点第一章:算法问题求解基础算法是对特定问题求解步骤的一种描述,它是指令的有限序列。

一.算法的五个特征:1.输入:算法有零个或多个输入量;2.输出:算法至少产生一个输出量;3.确定性:算法的每一条指令都有确切的定义,没有二义性;4.可行性:算法的每一条指令必须足够基本,它们可以通过已经实现的基本运算执行有限次来实现;5.有穷性:算法必须总能在执行有限步之后终止。

二.什么是算法?程序与算法的区别1.笼统地说,算法是求解一类问题的任意一种特殊的方法;较严格地说,算法是对特定问题求解步骤的一种描述,它是指令的有限序列。

2.程序是算法用某种程序设计语言的具体实现;算法必须可终止,程序却没有这一限制;即:程序可以不满足算法的第5个性质“有穷性”。

三.一个问题求解过程包括:理解问题、设计方案、实现方案、回顾复查。

四.系统生命周期或软件生命周期分为:开发期:分析、设计、编码、测试;运行期:维护。

五.算法描述方法:自然语言、流程图、伪代码、程序设计语言等。

六.算法分析:是指对算法的执行时间和所需空间的估算。

算法的效率通过算法分析来确定。

七.递归定义:是一种直接或间接引用自身的定义方法。

一个合法的递归定义包括两部分:基础情况和递归部分;基础情况:以直接形式明确列举新事物的若干简单对象;递归部分:有简单或较简单对象定义新对象的条件和方法八.常见的程序正确性证明方法:1.归纳法:由基础情况和归纳步骤组成。

归纳法是证明递归算法正确性和进行算法分析的强有力工具;2.反证法。

第二章:算法分析基础一.会计算程序步的执行次数(如书中例题程序2-1,2-2,2-3的总程序步数的计算)。

二.会证明5个渐近记法。

(如书中P22-25例2-1至例2-9)三.会计算递推式的显式。

(迭代法、代换法,主方法)四.会用主定理求T(n)=aT(n/b)+f(n)。

(主定理见P29,如例2-15至例2-18)五.一个好的算法应具备的4个重要特征:1.正确性:算法的执行结果应当满足预先规定的功能和性能要求;2.简明性:算法应思路清晰、层次分明、容易理解、利于编码和调试;3.效率:算法应有效使用存储空间,并具有高的时间效率;4.最优性:算法的执行时间已达到求解该类问题所需时间的下界。

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

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

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

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

不存在二义性。

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

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

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

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

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

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

经常采用的算法主要有迭代法、分而治之法、贪婪法、动态规划法、回溯法、分支限界法利用迭代算法解决问题,需要做好以下三个方面的工作:一、确定迭代模型。

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

二、建立迭代关系式。

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

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

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

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

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

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

计算机算法设计与分析期末复习资料

计算机算法设计与分析期末复习资料

一填空题(20x1=20分)1.当设定的问题有多种算法去解决时,其选择算法的主要原则是选择其中复杂性最低者。

2.用函数自身给出定义的函数是一种递归函数。

3.动态规划算法适用于解最优化问题。

4.贪心算法的两个基本要素是最优子结构性质、贪心选择性质。

5.回溯法在搜索解空间树的时候,为了避免无效搜索,通常使用深度优先手段来提高搜索效率。

6.依据求解目标的不同,分支界限法和回溯法分别用广度优先遍历或者最小耗费优先、深度优先的方式搜索解空间树。

7.分支界限法和回溯法主要区别在于求解目标和搜索方式不同。

8.在分支界限法实现的时候,通常采用方式来实现最大优先队列。

9.依据求解所花费的时间和所得到的结果不同,随机化算法大致分为数值随机化算法、蒙特卡罗算法、拉斯维加斯算法和舍伍德算法四类。

10.产生伪随机数最常用的方法是线性同余法。

11.线性规划算法中转轴变化的目的是将入基变量与离基变量互调位置。

12.最大网络流问题中可增广路是残留网络中一条容量大于0的路。

13.待解决问题适用于动态规划法的两个基本要素是。

14.算法必须满足的四个特征是输入、输出、确定性、有限性。

15.算法复杂性依赖于、、三个方面的复杂因素。

16.实现递归调用的关键是17.动态规划算法求解问题的重要线索是问题的性质。

18.最优子结构性质是贪心算法求解问题的关键特征。

19.分支界限法的求解目标是找出满足约束条件的一个解,或是在满足约束条件的解中找出在某种意义下的最优解。

20.问题的解空间树常见的有子集树、排列树两种类型。

21.分支界限算法依据其从和节点表中选择获得下一扩展节点的不同方式被分为22.对于任何约束标准型线性规划问题,只要将所用分基本变量都设置为0,就可以获得一个解。

三概念题(6x2=12分)1.算法复杂性:是算法运行所需要的计算机资源的量,需要时间资源的量称为时间复杂性,需要空间资源的量称为空间复杂性。

2.递归算法:直接或间接地调用自身的算法称为递归算法。

《算法设计与分析》期末必考复习及答案题整理

《算法设计与分析》期末必考复习及答案题整理

《算法设计与分析》期末必考复习及答案题整理1、分治法的基本思想:是将一个规模为N的问题分解为K个规模较小的子问题,这些子问题互相独立且与原问题相同。

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

2、贪心选择性质:指所求问题的整体最优解可以通过一系列局部最优的选择,3、 Prim算法:设G=(V,E)是连通带权图,V={1,2,…,n}。

构造G的最小生成树的Prim算法的基本思想是:首先置S={1},然后,只要S是V的真子集,就作如下的贪心选择:选取满足条件i?S,j?V-S,且c[j]最小的边,将顶点j添加到S 中。

这个过程一直进行到S=V时为止。

4、什么是剪枝函数:回溯法搜索解空间树时,通常采用两种策略避免无效搜索,提高回溯法的搜索效率。

其一是用约束函数在扩展结点处剪去不满足约束的子树;其二是用限界函数剪去得不到最优解的子树。

这两类函数统称为剪枝函数。

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

(2)在分支限界法中,每一个活结点只有一次机会成为扩展结点。

活结点一旦成为扩展结点,就一次性产生其所有儿子结点。

在这些儿子结点中,导致不可行解或导致非最优解的儿子结点被舍弃,其余儿子结点被加入活结点表中。

(3)此后,从活结点表中取下一结点成为当前扩展结点,并重复上述结点扩展过程,这个过程一直持续到找到所需的解或活结点表这空时为止。

5、什么是算法的复杂性:是该算法所需要的计算机资源的多少,它包括时间和空间资源。

6、最优子结构性质:该问题的最优解包含着其子问题的最优解。

7、回溯法:是一个既带有系统性又带有跳跃性的搜索算法。

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

算法搜索至解空间树的任一结点时,先判断该结点是否包含问题的解。

如果肯定不包含,则跳过对以该结点为根的子树的搜索,逐层向其祖先结点回溯;否则,进入该子树,继续按深度优先策略搜索。

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

计算机算法设计与分析期末复习资料一填空题(20x1=20分)1.当有多个算法来解决集合问题时,选择算法的主要原则是选择复杂度最低的算法。

2.函数本身定义的函数是递归函数。

该算法适用于求解动态规划问题。

4.贪心算法的两个基本要素是最优子结构性质、贪心选择性质。

5.在搜索解空间树时,回溯方法通常使用深度优先的方法来提高搜索效率,以避免无效搜索。

6.根据不同的求解目标,分枝定界法和回溯法分别通过广度优先遍历或最小代价优先和深度优先搜索解空间树。

7.分支界限法和回溯法主要区别在于求解目标和搜索方式不同。

8.在执行分支定界法时,通常使用该方法来实现最大优先级队列。

9.依据求解所花费的时间和所得到的结果不同,随机化算法大致分为数值随机化算法、蒙特卡罗算法、拉斯维加斯算法和舍伍德算法四类。

10.产生伪随机数最常用的方法是线性同余法。

11.线性规划算法中旋转轴变化的目的是调整基准内变量和基准外变量的位置。

12.在最大网络流问题中,增广路径是剩余网络中容量大于0的路径。

13.应用于动态规划的待解决问题的两个基本要素是:。

14.算法必须满足的四个特征是输入、输出、确定性和有限性。

15.算法复杂性依赖于、、三个方面的复杂因素。

16.实现递归调用的关键是17.动态规划算法解决问题的重要线索是问题的性质。

18.最优子结构性质是贪婪算法的关键特征。

19.分支界限法的求解目标是找出满足约束条件的一个解,或是在满足约束条件的解中找出在某种意义下的最优解。

20.有两种常见的解空间树:子集树和置换树。

21.分支界限算法依据其从和节点表中选择获得下一扩展节点的不同方式被分为22.对于任何约束标准线性规划问题,只要基本变量设置为0,就可以得到一个解。

三概念题(6x2=12分)1.算法复杂度:指算法运行所需的计算机资源量。

需要时间资源的量称为时间复杂度,需要空间资源源的量称为空间复杂性。

2.递归算法:直接或间接调用自身的算法称为递归算法。

3.贪心算法:在对问题求解时,总是做出当前看来是最好的选择。

也就是说,贪心算法并不从整体最优考虑到他所做的选择在某种意义上只是局部最优的选择。

贪心算法不能得到所有问题的全局最优解,但它可以产生全局最优解或全局最优解的近似解。

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

5.队列式(fifo)分支限界法:将活结点表组织成一个队列,并按队列的先进先出原则选取下一个结点是当前的扩展节点。

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

7.算法:由若干条指令组成的有穷序列。

8.最优子结构:当一个问题的最优解包含其子问题的最优解时,称该问题具有最优子结构的性质。

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

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

11.网络流:是定义在网络的边集合e上的一个非负函数flow={flow(v,w)},并称flow(v,w)为边(v,w)上的流四简答题(3x4=12分)1.当我们在一个算法中调用另一个算法时,系统在运行被调用的算法之前需要做什么?同时从被调用的算法返回回调用算法需完成哪些工作?答:当在一个算法中调用另一个算法时,系统需要在运行被调用的算法之前完成三件事。

(1)将所有实参指针、返回地址等信息传递给被调用算法;(2)为被调用算法的局部变量分配存储区;(3)将控制转移到被调用算法的入口。

在从被调用算法返回调用算法时需完成三件事:(1)保存被调用算法的计算结果;(2)释放分配给被调用算法的数据区;(3)根据被调用算法保存的返回地址,控制权被转移到调用算法。

2.动态规划算法求解问题的步骤?答:动态规划方法适合解决优化问题。

一般来说,它可以按照以下四个步骤进行设计:(1)找出最优解的性质并刻画其结构特征;(2)递归定义最优值;(3)以自底向上的方式计算最优值;(4)根据计算最优值时获得的信息构造最优解。

3.线性规划法中单纯形算法的基本步骤?答:步骤一选入基变量。

第二步:选择偏离基准的变量。

第3步:更改旋转轴。

步骤4到步骤1。

4.分治法的基本思想和原理是什么?答:分而治之的基本思想是将一个规模为n的问题分解为k个相互独立的小个子问题且与原问题相同。

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

5.使用回溯解决问题涉及哪些步骤?答:利用回溯法解题常包含以下3步骤:(1)针对所给问题,定义问题的解空间;(2)确定易于搜索的解空间结构;(3)采用深度优先法搜索解空间,并使用剪枝函数避免无效搜索。

五个分析问题(36分)1.求下列函数的渐进表达式:3n+10n;n/10+2;21+1/n;洛根;10log3分析和解决方案:3N+10N=O(n);n/10+2=o(2);21+1/n=o(1);logn=o(logn);10log3=o(n)2.讨论o(1)和o(2)的区别。

分析与解答:根据符号o的定义,很容易知道o(1)=o(2)。

当同一个函数用O(1)或O(2)表示时,差别只在于常数因子。

3.按渐近阶排列表达式下面的表达式按照从低到高的渐进顺序排列:4N,logn,3,20n,2,n。

同样是n!我应该是谁?分析与回答:2N2/3n32nN2二2二n三n根据从低到高的渐近阶,函数的阶数如下:2,logn,N,20n,4N,3,N!。

4.算法效率(1)假设某算法在输入规模为n时计算时间为t(n)=3*2。

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

现有另一台计算机,其运行速度为第一台的64倍,那么在这台新机器上用同一算法在t秒内能解输入规模为多大的问题?(2)如果将上述算法的计算时间改进为t(n)=n,并且其他条件保持不变,那么在新机器上,输入规模在t秒内可以解决多大的问题?(3)若上述算法的计算时间进一步改进为t(n)=8,其余条件不变,那么在新机器上用t秒时间能解输入规模为多大的问题?分析解答:(1)让新机器使用相同的算法来解决输入刻度为N1的问题,时间为T秒。

因此,有:T=3*2=3*2/64,得到N1=n+6。

(2) n1=64nn1=8n(3)由于t(n)=常数,因此算法可解任意规模的问题。

5.阶乘函数阶乘函数可递归地定义为:内部阶乘(intn){if(n==0)return1;returnn*factorial(n-1);}6.斐波那契序列无穷数列1,1,2,3,5,8,13,21,34,55,……,称为fibonacci数列。

它可以递归地定义为:请为这个无限序列设计一个算法并描述它(自然语言描述和VC++描述)第n个fibonacci数可递归地计算如下:intfibonacci(intn){if(n<=1)return1;return斐波那契(n-1)+斐波那契(n-2);}2二2n12N2/32n1n?0n n(n?1)!N0 1n?0英尺(北)??1n?1.f(n?1)?f(n?2)n?1.7.循环赛日程表有n=2名选手参加乒乓球循环赛。

现在我们需要设计一个符合以下要求的比赛时间表:(1)每个选手必须与其他N-1选手竞争一次;(2)每个玩家每天只能玩一次;(3)循环赛总共持续n-1天。

请设计一个算法解决以上问题,并进行描述(自然语言和c++语言)根据分而治之的策略,将所有参赛者分成两半,N名参赛者的比赛日程可由为N/2名参赛者设计的比赛日程确定。

当玩家被递归分割时,分割剩下的两个玩家变得非常简单。

此时,就让两名选手竞争吧。

8.有一批集装箱要装上一艘载重量为c的轮船。

其中集装箱i的重量为wi。

最优装载问题要求确定在装载当容量不受限制时,在船上装载尽可能多的集装箱。

分析并回答以下两个问题:(1)分析以上最优装载问题具有贪心选择性质(2)用c++程序进行正确的算法描述分析与解答:(1)假设集装箱已根据其重量从小到大分类,(x1,X2,…,xn)是最大装载问题的最佳解决方案。

设k=min{i|xi=1}。

很容易知道,如果给定的最可能载荷问题有一个解,那么1≤ K≤ N② 当k=1时,(x1,X2,…,xn)是满足贪婪选择性质的最优解。

② 当k>1时,Y1=1;yk=0;yi=xi,1因此,()是所给最有装载问题的可行解。

另一方面,()是满足贪婪选择性质的最优解。

因此,最优装载问题具有贪婪选择的性质。

(2)最优装载问题可用贪心算法求解。

采用重量最轻者先装的贪心选择策略,可产生最优装载问题的最优解。

具体算法描述如下。

样板voidloading(intx[],typew[],typec,intn){int*t=newint[n+1];排序(w,t,n);for(inti=1;i<=n;i++)x[i]=0;对于(inti=1;i<=n&&w[t[i]]<=c;i++){x[t[i]=1;c-=w[t[i];}k。

相关文档
最新文档