算法分析与设计的一些题目

    5、 设有一个整数数组,写出求相等元素最多的元素的算法。
  6、 设有n个运动员要进行网球循环赛。设计一个满足以下要求的比赛日程表。
  (1)每个选手必须与其它n-1选手各赛一次;
  (2)每个选手一天只能赛一次。
  7、 已知序列a1,a2,…,an,试设计一算法,从中找出一子序列
   ai1 < ai2 < … < aik
  使k达到最大,并讨论其复杂性。
  8、 设计一个O(n2)时间的算法,找出由n个数组成的序列的最长的单调递增子序列。
  9、已知有向图G=<V,E>,试设计一算法以判断对于任意两点u和v,是否存在一条从u到v的路径,并分析其复杂度。
  10、 已知用邻接矩阵表示的无向图(graph g ),编写算法:统计该图g 的边数。
  11、 某一机器中有n 个零件。每个零件有三个供应商,来自供应商j的零件i的重量为Wi ,j,其价格为Ci , j(1≤j≤3)。机器的价格等于所有零件价格之和,其重量也为各零件重量之和。设计一个动态规划算法,以决定在总价格不超过C的条件下,从哪些供应商购买零件能组成最轻的机器。(提示:可设w (i, j) 为价格低于j 时由零件i 到n 组成的最轻机器)。算法的复杂性是多少?
  12、已知有向图G=<V,E>,试设计一算法以判断是否对于任意两点u和v,至少存在一条从u到v或v到u的路径,并分析其复杂度。
  13、一个猎人带着一只狼、一头羊和一筐青菜欲乘一独木舟渡河,因独木舟太小,猎人一次至多只能带狼、羊或青菜之一渡河,但当与猎人不在河的同一边时,狼会吃掉羊、羊会吃掉青菜。试设计一个算法,帮猎人寻找一种渡河的次序让其不受损失地将狼、羊和青菜带过河去。
  14、 设有由n个不相同的整数组成的数列,记为:
  a(1)、a(2)、……、a(n)且a(i)<>a(j) (i<>j)
  例如3,18,7,14,10,12,23,41,16,24。若存在i1<i2<i3< … < ie 且有a(i1)<a(i2)< … <a(ie)则称为长度为e的不下降序列。如上例中3,18,23,24就是一个长度为4的不下降序列,同时也有3,7,10,12,16,24长度为6的不下降序列。设计一个算法,当原数列给出之后,求出最长的不下降序列。
  15、(装箱问题)有一个箱子容量为V(正整数,0<=V<=20000),同时有n个物品(0<n<=30,每个物品有一个体积(正整数)。设计一个算法在n个物品中,任取若干个装入箱内,使箱子的剩余空间为最小。
  16、 在杂货店比赛中你获得了第一名,奖品是一车免费杂货。店中有n 种不同的货物。规则规定从每种货物中最多只能拿一件,车子的容量为c,物品i 需占用wi 的空间,价值为pi 。你的目标是使车中装载的物品价值最大,设计一个算法,完成此功能。
  17、 一个小孩买了价值少于1美元的糖,并将1美元的钱交给售货员。售货员希望用数目最少的硬币找给小孩。假设提供了数目不限的面值为2 5美分、1 0美分、5美分、及1美分的硬币。分步骤组成要找的零钱数,每次加入一个硬币。设计一个算法,给出售货员所找的零钱数。(选择硬币时所采用的贪婪准则如下:每一次选择应使零钱数尽量增大。为保证解法的可行性——即所给的零钱等于要找的零钱数,所选择的硬币不应使零钱总数超过最终所需的数目)。
  18、有一个老板有一袋金块。每个月将有两名雇员会因其优异的表现分别被奖励一个金块。按规矩,排名第一的雇员将得到袋中最重的金块,排名第二的雇员将得到袋中最轻的金块。根据这种方式,除非有新的金块加入袋中,否则第一名雇员所得到的金块总是比第二名雇员所得到的金块重。如果有新的金块周期性的加入袋中,则每个月都必须找出最轻和最重的金块。假设有一台比较重量的仪器,我们希望用最少的比较次数找出最轻和最重的金块。设计一个算法,求出解决此问题的具有最少比较次数和比较方法。
  19、 [找出伪币]给你一个装有n个硬币的袋子。n个硬币中有一个是伪造的,并且那个伪造的硬币比真的硬币要轻一些。利用一台仪器比较两组硬币重量的仪器, 可以知道两组硬币的重量是否相同。设计一个算法,求出解决此问题的具有最少比较次数和比较方法。
  20、 考虑上题的伪币问题。假设把条件“伪币比真币轻”改为“伪币与真币的重量不同”,同样假定袋中有n 个硬币。给出相应算法。该算法可输出信息“不存在伪币”或找出伪币,算法应递归地将大的问题划分成两个较小的问题。
  21、 给出一个n 顶点网络(有向或无向),要求找出一个包含所有n 个顶点的具有最小耗费的环路。任何一个包含网络中所有n 个顶点的环路被称作一个旅行(t o u r)。在旅行商问题中,设计一个算法,找到一条最小耗费的旅行。
  22、 键盘输入一个仅由小写字母组成的字符串,输出以该串中任取M 个字母的所有排列及排列总数。输入数据均不需判错。
  23、 (组合问题)找出从自然数1,2,…,n中任取r个不同数的所有排列。
  24、 写一个算法,求出一个二叉树的深度与最大宽度。
  25、 写一个在一百万个数字中求十个最大的数的算法
  26、 写出先根遍历的非递归算法。
  
  
  28、(旅行家的预算问题)一个旅行家想驾驶汽车以最少的费用从一个城市到另一个城市,给定两个城市间的距离d1,汽车油箱的容量是c,每升汽油能行驶的距离d2,出发时每升汽油的价格是p,沿途加油站数为n(可为0),油站i离出发点的距离是di,每升汽油的价格是pi。设计一个算法,给出旅行家的预算问题的最少花费的加油方案。计算结果四舍五入保留小数点后两位,若无法到达目的地输出“No answer" 。
  29、 (删数问题)键盘输入一个高精度的正整数N,去掉其中任意S个数字后剩下的数字按左右次序组成一个新的正整数。对给定的N和S,寻找一种删数规则使得剩下得数字组成的新数最小。
  30、考察机器调度问题。假定仅有一台机器可用,选择最大数量的任务在这台机器上执行。解决这种任务选择问题的贪婪算法可按步骤选择任务,每步选择一个任务,其贪婪准则如下:从剩下的任务中选择具有最小的完成时间且不会与现有任务重叠的任务。实现该算法,其复杂性应为O(nlogn)。(提示:采用一个完成时间的最小堆)
  31、 编写一个求从图G中顶点s到顶点i的一条最短路径。算法的复杂性是多少?

你可能感兴趣的:(算法分析与设计的一些题目)