算法分析复习题目及答案16-12-10
算法与数据结构试题

算法与数据结构试题第⼀章算法分析基础1、下列时间复杂度最好的是( )A 、O )(log 2nB 、O )(2n C 、O )(n D 、O )log (2n n2、从逻辑上可以把数据结构分为哪两⼤类?()A 、动态结构、静态结构B 、顺序结构、链式结构C 、线性结构、⾮线性结构D 、初等结构、构造型结构3、算法分析的主要任务是分析()A .算法是否具有较好的可读性B .算法中是否存在语法错误C .算法的功能是否符合设计要求D .算法的执⾏时间和问题规模之间的关系4、下⾯程序段中带下划线的语句的执⾏次数是。
for(i=0;i<=n;i++)for(j=0;j<=i;j++) x=x+1;5、下列程序的时间复杂度为()s=0;for(i=0;i<10;i++)for(j=0;j<10;j++)s=s+1;A . O (10)B . O (20)C. O (1) D.O(102)6、数据的最⼩单位是()A.数据项B.数据类型C.数据元素D.数据变量7、下列程序的时间复杂度为()i=1;k=100;{k=k+1;i=i+2;}A.O(1)B. O(n)C. O(n3)D.O(n2)8、称算法的时间复杂度为O(logn),其含义是指算法的执⾏时间和_______的数量级相同。
第⼆章线性表1、⾮空的循环单链表L的尾结点(由p所指)满⾜()A.p->next=NULLB. p=NULLC. p->next= LD. p= L2、从⼀个长度为n的顺序表中删除第i个元素(1≤i≤n)时,需向前移动的元素的个数是()A.n-iB.n-i+1C.n-i-1D.i3、链表不具备的特点是()A.可随机访问任⼀结点 B.插⼊删除不需要移动元素C.不必事先估计存储空间 D.所需空间与其长度成正⽐4、顺序表的存储密度为1,⽽链表的存储密度 _。
5、写算法,顺序查找⼀个元素值等于e的元素的逻辑序号。
算法初步测试题及答案

算法初步测试题及答案work Information Technology Company.2020YEAR2第一章 算法初步一、选择题1.看下面的四段话,其中是解决问题的算法的是( ).A .把高一5班的同学分成两组,高个子参加篮球赛,矮个子参加拔河比赛B .把高一5班的同学分成两组,身高达到170 cm 的参加篮球赛,不足170 cm 的参加拔河比赛C .把a ,b 的值代入x =ab ,求方程ax =b 的解D .从2开始写起,后一个数为前一个数与2的和,不断地写,写出所有偶数2.任何一个算法都必须有的基本结构是( ). A .顺序结构 B .条件结构 C .循环结构D .三个都有3.右边的程序框图(如图所示),能判断任意输入的整数x 的奇偶性:其中判断框内的条件是( ).A .m =0B .x =0C .x =1D .m =14.给出以下一个算法的程序框图(如图所示),该程序框图的功能是( ).A .求输出a ,b ,c 三数的最大数B .求输出a ,b ,c 三数的最小数C .将a ,b ,c 按从小到大排列D .将a ,b ,c 按从大到小排列5.右图给出的是计算21+41+61+ … +201的值的 一个程序框图,其中判断框内应填入的条件是( ).A .i >10B .i <10C .i >20D .i <206.直到型循环结构为( ).ABC D7.下列给出的赋值语句中正确的是().A.4=M B.M=-MC.2B=A-3 D.x+y=08.右边程序执行后输出的结果是().A.-1 B.0 C.1 D.29.我国古代数学发展曾经处于世界领先水平,特别是宋、元时期的“算法”,其中可以同欧几里德辗转相除法相媲美的是().A.割圆术B.更相减损术C.秦九韶算法D.孙子乘余定理10.下面是一个算法的程序.如果输入的x的值是20,则输出的y的值是().A.100 B.50 C.25 D.150二、填空题11.下列关于算法的说法正确的是. (填上正确的序号)①某算法可以无止境地运算下去②一个问题的算法步骤不能超过1万次③完成一件事情的算法有且只有一种④设计算法要本着简单方便可操作的原则12.下列算法的功能是.S1输入A,B;(A,B均为数据)S2A=A+B;S3B=A-B;S4A=A-B;S5输出A,B.13.如图,输出的结果是.14 如图,输出的结果是.15 已知函数y=⎩⎨⎧-+,x,x232流程图表示的是给定x值,求其相应函数值的算法.请将该流程图补充完整.其中①处应填,②处应填.若输入x=3,则输出结果为.x≤3316.如图,输出结果为.三、解答题17.某小区每月向居民收取卫生费,计费方法是:3人和3人以下的住户,每户收取5元;超过3人的住户,每超出1人加收1.2元.设计一个算法,根据输入的人数,计算应收取的卫生费,并画出程序框图.18.编写程序,计算一个学生数学、语文、英语三门课的平均成绩.19.假定在银行中存款10 000元,按11.25%的利率,一年后连本带息将变为11 125元,若将此款继续存人银行,试问多长时间就会连本带利翻一番请用直到型和当型两种语句写出程序.20.用辗转相除法求91和49的最大公约数.第一章算法初步参考答案一、选择题1.解析:A.何为高个子,何为矮个子,标准不明确.C.当a=0时公式是无效的.D.非有限步可以完成.只有B符合算法的三个要求,所以答案是B.解:选B.2.A 解析:顺序结构是最简单的结构,也是最基本的结构.3.A 解析:x除以2,如余数为0,则x为偶数;余数不为0,则x为奇数.4.B 解析:从程序框图可知:输出的是三个数中的最小值.5.A 解析:这是一个10项求和问题.6.B 解析:直到型循环在执行了一次循环体之后,对控制循环条件进行判断,当条件不满足时反复做,满足则停止.7.B 解析:依据赋值语句的概念,选B是正确的.8.B 解析:程序执行后输出的结果是0,故选B.9.B10.D 解析:∵20>5,∴y=20×7.5=150,∴选 D.二、填空题11.答案:④.解析:由算法的特点所确定.12.答案:实现数据A,B的互换.解析:利用赋值语句的意义与题中算法的步骤进行分析.13.答案:12. 解析:m=2,p=7,m=12.4x=10 000r=11.25/100y=0WHILE x<20 000 y=y+1 x=10 000y=0r=11.25/100 Doy=y+114.答案:105. 解析:T=1,I=1,T=1,I=3,不满足条件;T=3,I=5,不满足条件;T=15,I=7,不满足条件;T=105,I=9,满足条件.输出T.15.答案:①x≤3;②y=-3x2;5. 解析:根据给出函数的解析式分析可填出.16.答案:9.解析:逐个取值计算.三、解答题17.解析:根据题意,可考虑用条件结构来进行算法设计.解:算法步骤:第一步,输入人数x,设收取的卫生费为m(元).第二步,判断x与3的大小.若x>3,则费用为m=5+(x-3)×1.2;若x≤3,则费用为m=5.第三步,输出m.18.分析:先写出算法,画出程序框图,再进行编程.程序框图:程序:19.解:用当型用直到型20.解析:由 91=49×1+42,得 42=91-49×1.因为余数42≠0,所以由辗转相除法,得 49=42×1+7,即 7=49-42×1; 42=7×6,即 0=42-7×6.所以,91和49的最大公约数等于7.5。
算法设计技巧与分析习题答案

算法设计技巧与分析习题答案【篇一:算法设计与分析考试题及答案】一特殊类型问题的一系列运算,此外,算法还应具有以下五个重要特性:_________,________,________,__________,__________。
2.算法的复杂性有_____________和___________之分,衡量一个算法好坏的标准是______________________。
3.某一问题可用动态规划算法求解的显著特征是____________________________________。
4.若序列x={b,c,a,d,b,c,d},y={a,c,b,a,b,d,c,d},请给出序列x和y的一个最长公共子序列_____________________________。
5.用回溯法解问题时,应明确定义问题的解空间,问题的解空间至少应包含___________。
6.动态规划算法的基本思想是将待求解问题分解成若干____________,先求解___________,然后从这些____________的解得到原问题的解。
7.以深度优先方式系统搜索问题解的算法称为_____________。
8.0-1背包问题的回溯算法所需的计算时间为_____________,用动态规划算法所需的计算时间为____________。
9.动态规划算法的两个基本要素是___________和___________。
10.二分搜索算法是利用_______________实现的算法。
二、综合题(50分)1.写出设计动态规划算法的主要步骤。
2.流水作业调度问题的johnson算法的思想。
3.若n=4,在机器m1和m2上加工作业i所需的时间分别为ai和bi,且(a1,a2,a3,a4)=(4,5,12,10),(b1,b2,b3,b4)=(8,2,15,9)求4个作业的最优调度方案,并计算最优值。
4.使用回溯法解0/1背包问题:n=3,c=9,v={6,10,3},w={3,4,4},其解空间有长度为3的0-1向量组成,要求用一棵完全二叉树表示其解空间(从根出发,左1右0),并画出其解空间树,计算其最优值及最优解。
算法设计与分析复习题整理 (1)

一、基本题:算法:1、程序是算法用某种程序设计语言的具体实现。
2、算法就是一组有穷的序列(规则) ,它们规定了解决某一特定类型问题的一系列运算。
3、算法的复杂性是算法效率的度量,是评价算法优劣的重要依据。
4、算法的“确定性”指的是组成算法的每条指令是清晰的,无歧义的。
5、算法满足的性质:输入、输出、确定性、有限性。
6、衡量一个算法好坏的标准是时间复杂度低。
7、算法运行所需要的计算机资源的量,称为算法复杂性,主要包括时间复杂性和空间复杂性。
8、任何可用计算机求解的问题所需的时间都与其规模有关。
递归与分治:9、递归与分治算法应满足条件:最优子结构性质与子问题独立。
10、分治法的基本思想是首先将待求解问题分解成若干子问题。
11、边界条件与递归方程是递归函数的两个要素。
12、从分治法的一般设计模式可以看出,用它设计出的程序一般是递归算法。
13、将一个难以直接解决的大问题,分解成一些规模较小的相同问题,以便各个击破。
这属于分治法的解决方法。
14、Strassen矩阵乘法是利用分治策略实现的算法。
15、大整数乘积算法是用分治法来设计的。
16、二分搜索算法是利用分治策略实现的算法。
动态规划:17、动态规划算法的两个基本要素是最优子结构性质和重叠子问题性质。
18、下列算法中通常以自底向上的方式求解最优解的是动态规划法。
19、备忘录方法是动态规划算法的变形。
20、最优子结构性质是贪心算法与动态规划算法的共同点。
21、解决0/1背包问题可以使用动态规划、回溯法,其中不需要排序的是动态规划,需要排序的是回溯法。
贪心算法:22、贪心算法总是做出在当前看来最好的选择。
也就是说贪心算法并不从整体最优考虑,它所做出的选择只是在某种意义上的局部最优解。
23、最优子结构性质是贪心算法与动态规划算法的共同点。
24、背包问题的贪心算法所需的计算时间为 O(nlogn) 。
回溯法:25、回溯法中的解空间树结构通常有两种,分别是子集树和排列树。
算法分析(第二版)清华大学出版社 部分习题的参考答案

5.中断、篡改、伪造6.公开密钥
7.链路、端到端8.管理信息库、管理信息结构、管理协议
9.公开密钥密码技术10.身份验证、加密、访问控制
二、选择题
1. C2. C3. D4. D5. D
6. C7. B8. D9. D10. C
网桥1转发表网桥2转发表网桥1网桥2站地址端口站地址端口mac11向端口2转发该帧将mac1端口1登记到转发表mac32mac31向端口1转发该帧将mac3端口2登记到转发表向端口2转发该帧将mac3端口1登记到转发表mac42从转发表中查到目的端口是1向端口1转发该帧将mac4端口2登记到转发表mac21将该帧丢弃同时将mac2端口1登记到转发表第5章一填空题1
MAC4
2
从转发表中查到目的端口是1向端口1转发该帧,将(MAC4,端口2)登记到转发表
MAC2
1
将该帧丢弃,同时将(MAC2,端口1)登记到转发表
第5章
一、填空题
1.ARP、IGMP2.128.11、3.11
3.路由、建立虚电路、路由算法4.泛射路由选择、固定路由选择和随机路由选择
5.IP数据报6.ARP
1.应用进程2.客户/服务器
6.字符代码、数字代码
7.www服务器、www浏览器8.ASCII传输模、二进制数字传输模式
9.A记录、CNAME记录、MX记录10.SMTP
二、选择题
1. D2. C3. B4. A5. B
6. C7. C8. B9. A
2.网络的拓扑结构表示网络传输介质和结点的连接形式,通常有总线型、环形、星形和树形。
3.OSI将整个网络通信的功能划分为七个层次,由低到高分别是物理层、链路层、网络层、传输层、会话层、表示层和应用层。
《算法设计与分析》复习题参考答案

《算法设计与分析》复习题参考答案一、概念题:请解释下列术语。
1.数据元素的集合。
2.队列是一个线性表,限制为只能在固定的一端进行插入,在固定的另一端进行删除。
3.对于算法a,如果存在一多项式p(),使得对a的每个大小为n的输入,a的计算时间为o(p(n)),则称a具有多项式复杂度4.二叉树的层数i与该层上的结点数n的关系为:n(i)=i2。
5.如果可满足性约化为一个问题L,则称该问题为NP-难度的。
6.算法就是一组有穷的规则,它规定了解决某一特定类型问题的一系列运算。
7.多数据单指令流8.若图的任意两个节点间均存在路径可达,则称该图为连通图。
9. 是指一个数学模型以及定义在该模型上的一组操作。
10.算法的复杂度只能用指数函数对其限界。
11.函数或过程直接或间接调用它自己。
12.和高度相同的满二叉树的每个对应的顶点编号相同的树13.由所有可行状态所构成的树。
14.如果L时NP难度的且L∈NP,则称问题L是NP-完全的。
15.算法是一个步骤的序列,满足:有穷性、可行性、确定性、输入、输出;过程不需要满足由穷性。
16.有向图的每条边有起点与终点之分,且用箭头指向边的终点。
无向图的边无起点和终点之分,边无箭头。
17.树(tree)是一个或多个结点的有限集合,,它使得:①有一个特别指定的称作根(root)的结点;②剩下的结点被分成m≥0个不相交的集合tl,…,tm,这些集合的每一个都是一棵树,并称t1,…,tm为这根的子树(subtree)。
18.P是所有可在多项式时间内用确定算法求解的判定问题的集合。
19.运算结果是唯一确定的算法20. nP是所有可在多项式时间内用不确定算法求解的判定问题的集合二、填空题1.n2.O ( n )3.最优化问题4.宽度优先搜索5.结点的最大级数6.互异7.内结点和外结点8.方形9.内部路径长度、外部路径长度10.一次11.归并分类算法12.贪心选择性质13.最优子结构14.二元归并15.最小成本生成树16.最优性17.最优决策18.可容许最大成本c19.最小成本三、程序填空题。
数据结构与算法设计与分析考核试卷

8.在冒泡排序中,每一趟排序都能确定一个元素的最终位置。()
答案:______
9. Prim算法和Kruskal算法都可以用来求解最小生成树问题,但Prim算法总是从某一顶点开始,而Kruskal算法总是从某一权值最小的边开始。()
答案:______
10.在一个递归算法中,如果递归调用不是算法的最后一个操作,那么这种递归称为尾递归。()
B.邻接表适合表示稀疏图
C.邻接多重表适合表示无向图
D.邻接表和邻接多重表适合表示有向图
14.以下哪些算法属于分治算法?()
A.快速排序
B.归并排序
C.二分查找
D.动态规划
15.以下哪些情况下,动态规划比贪心算法更适合解决问题?()
A.存在重叠子问题
B.问题具有最优子结构
C.需要考虑所有可能的选择
D.问题可以通过局部最优达到全局最优
C.插入一个节点
D.查找某个节点
5.以下哪些算法可以用于解决最小生成树问题?()
A. Kruskal算法
B. Prim算法
C. Dijkstra算法
D. Bellman-Ford算法
6.以下哪些数据结构可以用来实现堆?()
A.数组
B.链表
C.栈
D.队列
7.关于图的深度优先遍历和广度优先遍历,以下哪些说法是正确的?()
________________________________
2.动态规划算法通常用于解决最优化问题,请阐述动态规划算法的三个基本要素,并给出一个动态规划问题的实例。
________________________________
________________________________
2021《算法数据结构》复习试题库及答案

2021《算法数据结构》复习试题库及答案试题1算法设计题(每小题6分.共12分)1.请写出在循环队列上进行插入操作的算法。
要求若插入成功则返目true,否则返回else.循环队列定义如下:struet CyclicQueue {ElemTy[ae elem[M]; //M为已定义过的整型常量,表示队列数组空间长度int rear,front; //rear指向队尾元素后一个位置,front指向队头元索int tag;};注意:当front=rear且tag=0时,队列空,当front=rear 且tag=1时,队列满,即队列中已有M个元素.bool EnCQueue(CyclicQueue& Q, ElemType x){ {/*编写该函数体。
/}//在下面编写函数体2.已知二又树中的结点类型Bin·rreeNode定义为:slruct BinTreeNode {char data;BinTreeNode * left, * right;};其中data为结点值域,left和righ~分别为指向左、右子女结点的指针域,根据下面函数声明编写出求一棵二叉树中结点总数的递归算法,该总数值由函数返回.假定BT初始指向这棵二又树的.根结点.int BTreeCount(BinTreeNode* BT);答案算法设计题(2小题,每小题6‘分,共12分)1.分步给分if (Q. rear=Q, front && Q tag== 1) return false;Q. elem[Q, rear] = x;Q. rtar= (Q. rear+ 1) %M;if(Q. rear== Q. front) Q. tag= 1;return true;2.分步给分int BTreeCount(BinTreeNode * BT)(if(BT== NULL)return O;elsereturn BTreeCount ( BT->left) +BTreeCount(BT-> fight) + l;试题21.设字符串类String具有下列操作:int Length()const; //计算字符串的长度chargetData(k); //提取字符串第k个字符的值若字符串Tar的值为“ababcabcacbab“,的值为‘abcac”时,(1)给出下面算法执行后返回的结果,(2)给出下面。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一。
选择题1、二分搜索算法是利用( A )实现的算法。
A、分治策略B、动态规划法C、贪心法D、回溯法2、下列不是动态规划算法基本步骤的是( D )。
A、找出最优解的性质B、构造最优解C、算出最优解D、定义最优解3、最大效益优先是( A )的一搜索方式。
A、分支界限法B、动态规划法C、贪心法D、回溯法5. 回溯法解旅行售货员问题时的解空间树是()。
A、子集树B、排列树C、深度优先生成树D、广度优先生成树6.下列算法中通常以自底向上的方式求解最优解的是( B )。
A、备忘录法B、动态规划法C、贪心法D、回溯法注意:动态规划采用的是自底向上的方式求解,而贪心算法采用的是自顶向下的方式来求解问题。
7、衡量一个算法好坏的标准是(C )。
A 运行速度快B 占用空间少C 时间复杂度低D 代码短8、以下不可以使用分治法求解的是(D )。
A 棋盘覆盖问题B 选择问题C 归并排序D 0/1背包问题9. 实现循环赛日程表利用的算法是( A )。
A、分治策略B、动态规划法C、贪心法D、回溯法11.下面不是分支界限法搜索方式的是( D )。
A、广度优先B、最小耗费优先C、最大效益优先D、深度优先12.下列算法中通常以深度优先方式系统搜索问题解的是( D )。
A、备忘录法B、动态规划法C、贪心法D、回溯法13.备忘录方法是那种算法的变形。
( B )A、分治法B、动态规划法C、贪心法D、回溯法注意:备忘录是动态规划方法的一个步骤。
14.哈弗曼编码的贪心算法所需的计算时间为( B )。
A、O(n2n)B、O(nlogn)C、O(2n)D、O(n)15.分支限界法解最大团问题时,活结点表的组织形式是( B )。
A、最小堆B、最大堆C、栈D、数组16.最长公共子序列算法利用的算法是( B )。
A、分支界限法B、动态规划法C、贪心法D、回溯法17.实现棋盘覆盖算法利用的算法是( A )。
A、分治法B、动态规划法C、贪心法D、回溯法18.下面是贪心算法的基本要素的是( C )。
A、重叠子问题B、构造最优解C、贪心选择性质D、定义最优解注意:定义最优解与重叠子问题这俩个性质是动态规划算法的基本要素。
19.回溯法的效率不依赖于下列哪些因素( D )A.满足显约束的值的个数B. 计算约束函数的时间C. 计算限界函数的时间D. 确定解空间的时间20.下面哪种函数是回溯法中为避免无效搜索采取的策略( B )A.递归函数 B.剪枝函数C。
随机数函数 D.搜索函数注意:剪枝函数又分为约束函数与限界函数。
21、下面关于NP问题说法正确的是(B )A NP问题都是不可能解决的问题B P类问题包含在NP类问题中C NP完全问题是P类问题的子集D NP类问题包含在P类问题中24. ( D )是贪心算法与动态规划算法的共同点。
A、重叠子问题B、构造最优解C、贪心选择性质D、最优子结构性质注意:最优子结构性质是贪心算法与动态规划算法共同特点。
25. 矩阵连乘问题的算法可由(B)设计实现。
A、分支界限算法B、动态规划算法C、贪心算法D、回溯算法26. 分支限界法解旅行售货员问题时,活结点表的组织形式是( A )。
A、最小堆B、最大堆C、栈D、数组注意:分支限界法在表示最大团问题时,活结点采用的是最大堆。
29、使用分治法求解不需要满足的条件是(A )。
A 子问题必须是一样的B 子问题不能够重复C 子问题的解可以合并D 原问题和子问题使用相同的方法解注意:使用分治法解决问题我们对问题的要求是子问题与原问题类似,即我们采用相同的方法解决即可。
不是需要原问题与子问题是一模一样的。
30、下面问题(B )不能使用贪心法解决。
A 单源最短路径问题B N皇后问题C 最小花费生成树问题D 背包问题31、下列算法中不能解决0/1背包问题的是(A )A 贪心法B 动态规划C 回溯法D 分支限界法注意:贪心算法是不能完全解决0/1背包问题,但是其可以解决背包问题的。
32、回溯法搜索状态空间树是按照(C )的顺序。
A 中序遍历B 广度优先遍历C 深度优先遍历D 层次优先遍历34.实现合并排序利用的算法是( A )。
A、分治策略B、动态规划法C、贪心法D、回溯法35.下列是动态规划算法基本要素的是( D )。
A、定义最优解B、构造最优解C、算出最优解D、子问题重叠性质36.下列算法中通常以自底向上的方式求解最优解的是( B )。
A、分治法B、动态规划法C、贪心法D、回溯法37.采用广度优先策略搜索的算法是( A )。
A、分支界限法B、动态规划法C、贪心法D、回溯法38、合并排序(也就是归并排序)算法是利用( A )实现的算法。
A、分治策略B、动态规划法C、贪心法D、回溯法40、背包问题的贪心算法所需的计算时间为( B )A、O(n2n)B、O(nlogn)C、O(2n)D、O(n)41.实现大整数的乘法是利用的算法( C )。
A、贪心法B、动态规划法C、分治策略D、回溯法42.0-1背包问题的回溯算法所需的计算时间为( A )A、O(n*2^n)B、O(nlogn)C、O(2n)D、O(n)43.采用最大效益优先搜索方式的算法是( A )。
A、分支界限法B、动态规划法C、贪心法D、回溯法44.贪心算法与动态规划算法的主要区别是( A )。
A、最优子结构B、贪心选择性质C、构造最优解D、定义最优解45. 实现最大子段和利用的算法是( B )。
A、分治策略B、动态规划法C、贪心法D、回溯法46.优先队列式分支限界法选取扩展结点的原则是( C )。
A、先进先出B、后进先出C、结点的优先级D、随机48、广度优先是( A )的一搜索方式。
A、分支界限法B、动态规划法C、贪心法D、回溯法52. 一个问题可用动态规划算法或贪心算法求解的关键特征是问题的( B )。
A、重叠子问题B、最优子结构性质C、贪心选择性质D、定义最优解注意:一个问题能用动态规划算法或贪心算法解决的关键特征是重叠子问题。
53.采用贪心算法的最优装载问题的主要计算量在于将集装箱依其重量从小到大排序,故算法的时间复杂度为 ( B ) 。
A、O(n2n)B、O(nlogn)C、O(2n)D、O(n)54. 以深度优先方式系统搜索问题解的算法称为 ( D ) 。
A、分支界限算法B、概率算法C、贪心算法D、回溯算法55. 实现最长公共子序列利用的算法是( B )。
A、分治策略B、动态规划法C、贪心法D、回溯法二、填空题1.算法的复杂性有时间复杂性和空间复杂性之分。
2、程序是算法用某种程序设计语言的具体实现。
注意:算法具有有限性而程序可能不具备有限性。
3、算法的“确定性”指的是组成算法的每条指令是清晰的,无歧义的。
4.矩阵连乘问题的算法可由动态规划设计实现。
6、算法是指解决问题的一种方法或一个过程,其具有有限性。
7、从分治法的一般设计模式可以看出,用它设计出的程序一般是递归算法。
89111415161719.贪心算法的基本要素是贪心选择质和最优子结构性质。
21. 动态规划算法的基本思想是将待求解问题分解成若干子问题,先求解子问题,然后从这些子问题的解得到原问题的解。
22.算法是由若干条指令组成的有穷序列,且要满足输入、输出、确定性和有限性四条性质。
23、大整数乘积算法是用分治法来设计的。
24、以广度优先或以最小耗费方式搜索问题解的算法称为分支限界法。
26、贪心选择性质是贪心算法可行的第一个基本要素,也是贪心算法与动态规划算法的主要区别。
27.快速排序算法是基于分治策略的一种排序算法。
x[i]=1;//将X[i]标记为已选中c - =w[i];//总容量减去W[i]}if (i<=n)x[i]=c/w[i];//表示还要装几分之几}3.贪心算法求装载问题template<class Type>void Loading(int x[], Type w[], Type c, int n) {int *t = new int [n+1];4.else A[i]=false;}}5.快速排序template<class Type>void QuickSort (Type a[], int p, int r) {if (p<r) {int q=Partition(a,p,r);QuickSort (a,p,q-1); //对左半段排序}6.swap(list[k],list[i]);}}四、问答题1.请简述分治法的基本原理。
答:分治法的基本思想是将一个规模为n的问题分解为k个规模较小的子问题,这些子问题互相独立且与原问题相同。
递归地解这些子问题,然后将各个子问题的解合并得到原问题的解。
2设计动态规划算法的主要步骤为:(1)找出最优解的性质,并刻划其结构特征。
(2)递归地定义最优值。
(3)以自底向上的方式计算出最优值。
(4)根据计算最优值时得到的信息,构造最优解。
3.请区分分治与动归的异同。
分治法与动态规划法的相同点是:将待求解的问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。
两者的不同点是:适合于用动态规划法求解的问题,经分解得到的子问题往往不是互相独立的。
而用分治法求解的问题,经分解得到的子问题往往是互相独立的。
4.请区分分支限界与回溯的异同。
相同点:分支限界法与回溯法的相同点是:都是一种在问题的解空间树T中搜索问题解的算法。
不同点:(1)求解目标不同:回溯法所求是满足约束条件的所有解;分支限界法即求在某种意义下的最优解。
(2)搜索方式不同:回溯法以深度优先的方式搜索解空间树T;而分支限界法则以广度优先或以最小耗费优先的方式搜索解空间树T。
(3)对扩展结点的扩展方式不同:回溯法的活结点可以多次变成扩展结点;分支限界的活结点只有一次机会变成扩展结点。
(4)存储空间的要求不同。
5用回溯法搜索子集树的算法为:void backtrack (int t){if (t>n)output(x);elsefor (int i=0;i<=1;i++) {x[t]=i;if (constraint(t)&&bound(t))backtrack(t+1);}}6.分治法所能解决的问题一般具有的几个特征是:(1)该问题的规模缩小到一定的程度就可以容易地解决;(2)该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质;(3)利用该问题分解出的子问题的解可以合并为该问题的解;(4)原问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子问题。
7.用分支限界法设计算法的步骤是:(1)针对所给问题,定义问题的解空间(对解进行编码);(2)确定易于搜索的解空间结构(按树或图组织解);(3)以广度优先或以最小耗费(最大收益)优先的方式搜索解空间,并在搜索过程中用剪枝函数避免无效搜索。