网站大量收购独家精品文档,联系QQ:2885784924

算法设计与分析 第2版-复习.pptVIP

算法设计与分析 第2版-复习.ppt

此“教育”领域文档为创作者个人分享资料,不作为权威性指导和指引,仅供参考
  1. 1、本文档共20页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基本算法策略 分治法 蛮力法 回溯法 分枝限界法 贪心法 动态规划 相关概念 求解过程 应用条件 算法框架 在算法设计中正确使用算法策略 以下不可以使用分治法求解的是( )。 A.棋盘覆盖问题 B.求序列中最大值问题 C.归并排序 D.0/1背包问题 很多分治法算法都是采用递归实现的,那么是不是任何分治法算法都只能够采用递归实现呢? 答:递归是算法设计的一种手段,是从编程的角度考虑的,可以将一个大问题转化为若干个相似的小问题求解,分治法的思路与递归吻合,所以很多分治法算法是采用递归实现的。 但分治法是一种算法设计策略,既可以采用递归来实现,也可以采用非递归来实现,有些计算机语言不支持递归(如早期的VB语言),但也可以用于实现分治法算法。即便是支持递归的语言,也可以采用非递归分治法即迭代算法。 二维空间中有n个点,采用蛮力法法求其中距离最近的两个点,对应的算法时间复杂度是( )。 A.O(n) B.O(n2) C.O(nlog2n) D.O(n3) 求解买帽子问题。度度熊想去商场买一顶帽子,商场里有N顶帽子,有些帽子的价格可能相同。度度熊想买一顶价格第三便宜的帽子,问第三便宜的帽子价格是多少? 输入描述:首先输入一个正整数N(N≤50),接下来输入N个数表示每顶帽子的价格(价格均是正整数,且小于等于1000)。 输出描述:如果存在第三便宜的帽子,请输出这个价格是多少,否则输出-1。 输入例子1: 10 10 10 10 10 20 20 30 30 40 40 输出例子1: 30 解:首先对数列a[0..n-1]递增排序,然后删除相邻的重复的元素,即多个相邻的重复的元素仅仅保留一个。最后返回a[2]即为所求。对应的完整程序如下: #include stdio.h #include algorithm using namespace std; #define MAX 51 int a[MAX]; //存放输入的数列 int n; //存放输入的元素个数 void Delsame() //删除相邻重复的元素 { int i,j; j=1; for (i=1;in;i++) if (a[i]!=a[j-1]) { a[j]=a[i]; j++; } n=j; //修改删除后的元素个数 } int solve() //返回第3便宜的帽子 { sort(a,a+n); Delsame(); if (n3) return -1; else return a[2]; } int main() { scanf(“%d”,n); for (int i=0;in;i++) scanf(“%d”,a[i]); printf(“%d\n”,solve()); return 0; } 下面哪种函数是回溯法中为避免无效搜索采取的策略( )。 A.递归函数 B.剪枝函数 C.随机数函数 D.搜索函数 回溯法解0-1背包问题时的解空间树是( )。 A.子集树 B.排列树 C.深度优先生成树 D.广度优先生成树 求解集装箱问题。有n个集装箱要装上一艘载重量为W的轮船,其中集装箱i(1≤i≤n)的重量为wi。在装载体积不受限制的情况下,将尽可能重的集装箱装上轮船,当总重量相同时要求选取的集装箱个数尽可能少。 例如,n=5,W=10,w={5,2,6,4,3}时,其最佳装载方案是(0,0,1,1,0),即装载集装箱2和3。 void Loading(int tw,int m,int op[],int i) //求最优方案 { //tw为考虑集装箱i时装入的总重量,m为已经装载的数量 if (i==n) //找到一个叶结点 { if (tw=W (twmaxw || (tw==maxw mminm))) { maxw=tw; //找到一个满足条件的更优解,保存它 minm=m; for (int j=1;j=n;j++) x[j]=op[j]; } } else //尚未找完所有物品 { op[i]=1; //选取集装箱i if (tw+w[i]=W) //左孩子结点剪枝:装载满足条件的集装箱 Loading(tw+w[i],m+1,op,i+1); op[i]=0; //不

文档评论(0)

dllkxy + 关注
实名认证
文档贡献者

本文库主要涉及建筑、教育等资料,有问题可以联系解决哦

版权声明书
用户编号:5213302032000001

1亿VIP精品文档

相关文档