算法设计题目pdf.docVIP

  • 205
  • 0
  • 约 13页
  • 2016-12-11 发布于河南
  • 举报
第 2章 1、大整数乘法的 O(nm )算法 log(3/2) 给定 2个大整数 u和 v,它们分别有 m位和 n位数字,且 m≤n。 用通常的乘法求 uv的值需要 O(mn)时间。可以 u和 v均看作是有 n 位数字的大整数,用教材第 2章介绍的分治法,在 O(nlog3)时间内计 算 uv的值。当 m比 n小得多时,用这种方法就显得效率不够高。试 设计一个算法,在上述情况下用 O(nmlog(3/2))时间求出 uv的值。 2、O(1)空间子数组换位算法 设 a[0:n-1]是一个有 n个元素的数组,k(1≤k≤n-1)是一个非负整 数。试设计一个算法将子数组 a[0:k-1]与 a[k+1:n-1]换位。要求算法 在最坏情况下耗时 O(n),且只用到 O(1)的辅助空间。 3、√段合并排序算法 如果在合并排序算法的分割步骤中,将数组 a[0:n-1]划分为?√ ? 个子数组,每个子数组中有 O(√ )个元素。然后递归地对分割后的子 数组进行排序,最后将所得到的?√ ?个排好序的子数组合并成所要的 排好序的数组 a[0:n-1]。设计一个实现上述策略的合并排序算法,并 分析算法的计算复杂性。 4、合并排序算法 对拨给元素存储于数组和存储于链表中的 2种情形,写出合并排 序算法。 5、非增序快速排序算法 如何修改 QuickSort才能使其将输入元素按非增序排序? 第三章 1、整数线性规划问题 考虑下面的整数线性规划问题 ∑ =1 ∑ ≤ =1 为非负整数,1≤ ≤ { 试设计一个解此问题的动态规划算法,并分析算法的计算复杂性。 2、Ackermann函数 Ackermann函数 A(m,n)可递归地定义如下: +1 =0 A(m,n)={ ( ?1,1) 0, =0 ( ?1, ( , ?1)) 0, 0 试设计一个计算 A(m,n)的动态规划算法,该算法只占用 O(m)空间。 3、独立任务最优调试问题 问题描述:用 2台机 A和 B处理 n个作业。设第 i个作业交给机器 A 处理时需要时间 ai,若由机器 B来处理,则需要时间 bi。由于各作业 的选战和机器的性能关系,很可能对于某些 i,有 ai≥bi,而对于某 些 j,j≠i,有 aibj。既不能将一个作业分开由 2台机器处理,也没 有一台机器能同时处理 2个作业。设计一个动态规划算法,使得这 2 台机器处理完这 n个作业的时间最短(从任何一台机器开工到最后一 台机器停工的总时间)。研究一个实例:(a1,a2,a3,a4,a5,a6)= (2,5,7,10,5,2);(b1,b2,b3,b4,b5,b6)=(3,8,4, 11,3,4)。 算法设计:对于给定的 2台处理机 A和 B处理 n个作业,找出一个 最优调试方案,使 2台机器焉得完这 n个作业的时间最短。 数据输入:由文件 input.txt提供输入数据。文件的第 1行是 1个正 整数 n,表示要处理 n个作业。在接下来的 2行中,每行有 n个正整 数,分别表示处理机 A和处理机 B处理第 i个作业需要的处理时间。 结果输出:将计算出的最短处理时间输出到文件 output.txt。 输入文件示例 input.txt 6 输出文件示例 output.txt 15 2 5 7 10 5 2 3 8 4 11 3 4 4、三角形问题 问题描述:给定一个由 n行数字组成的数字三角形,如下图所示。试 设计一个算法,计算出从三角形的顶到底的一条路径,使该路径经过 的数字总和最大。 7 3 7 8 4 8 5 1 2 0 6 2 4 4 5 编程任务:对于给定的由 n行数字组成的数字三角形,编程计算从三 角形的顶到底的路径经过的数字和的最大值。 数据输入:由文件 input.txt提供输入数据。文件的第 1行是数字三 角形的行数 n,1≤n≤100。接下来 n行是数字三角形各行中的数字。 所有数字在 0~99之间。 结果输出:程序运行结束时,将计算结果输出到文件 output.txt中。 文件第 1行中的数是计算出的最大值。 输入文件示例 输出文件示例 output.txt 30 Input.txt 5 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 5、租用游艇问题 问题描述:长江游艇俱乐部在长江上设置了 n个游艇出租站 1,2,……, n。游客可在游艇站租用游艇,并在下游的任何一个游艇站归还游艇。 游艇站 i到游艇出租站 j之间的租金为 r(i,j),1≤ij≤n。试设计一 个算法,计算出从游艇出租站 1到游艇出租站 n所需的最少租金。 编程任务:对于给定的

文档评论(0)

1亿VIP精品文档

相关文档