太原理工大学软件学院算法设计与分析复习题目及答案
算法设计与分析-习题参考答案

算法设计与分析基础习题1.15..证明等式gcd(m,n)=gcd(n,m mod n)对每一对正整数m,n都成立.Hint:根据除法的定义不难证明:●如果d整除u和v, 那么d一定能整除u±v;●如果d整除u,那么d也能够整除u的任何整数倍ku.对于任意一对正整数m,n,若d能整除m和n,那么d一定能整除n和r=m mod n=m-qn;显然,若d能整除n和r,也一定能整除m=r+qn和n。
数对(m,n)和(n,r)具有相同的公约数的有限非空集,其中也包括了最大公约数。
故gcd(m,n)=gcd(n,r)6.对于第一个数小于第二个数的一对数字,欧几里得算法将会如何处理?该算法在处理这种输入的过程中,上述情况最多会发生几次?Hint:对于任何形如0<=m<n的一对数字,Euclid算法在第一次叠代时交换m和n, 即gcd(m,n)=gcd(n,m)并且这种交换处理只发生一次.7.a.对于所有1≤m,n≤10的输入, Euclid算法最少要做几次除法?(1次)b. 对于所有1≤m,n≤10的输入, Euclid算法最多要做几次除法?(5次)gcd(5,8)习题1.21.(农夫过河)P—农夫W—狼G—山羊C—白菜2.(过桥问题)1,2,5,10---分别代表4个人, f—手电筒4. 对于任意实系数a,b,c, 某个算法能求方程ax^2+bx+c=0的实根,写出上述算法的伪代码(可以假设sqrt(x)是求平方根的函数)算法Quadratic(a,b,c)//求方程ax^2+bx+c=0的实根的算法//输入:实系数a,b,c//输出:实根或者无解信息If a≠0D←b*b-4*a*cIf D>0temp←2*ax1←(-b+sqrt(D))/tempx2←(-b-sqrt(D))/tempreturn x1,x2else if D=0 return –b/(2*a)else return “no real roots”else //a=0if b≠0 return –c/belse //a=b=0if c=0 return “no real numbers”else return “no real roots”5.描述将十进制整数表达为二进制整数的标准算法a.用文字描述b.用伪代码描述解答:a.将十进制整数转换为二进制整数的算法输入:一个正整数n输出:正整数n相应的二进制数第一步:用n除以2,余数赋给Ki(i=0,1,2...),商赋给n第二步:如果n=0,则到第三步,否则重复第一步第三步:将Ki按照i从高到低的顺序输出b.伪代码算法DectoBin(n)//将十进制整数n转换为二进制整数的算法//输入:正整数n//输出:该正整数相应的二进制数,该数存放于数组Bin[1...n]中i=1while n!=0 do {Bin[i]=n%2;n=(int)n/2;i++;}while i!=0 do{print Bin[i];i--;}9.考虑下面这个算法,它求的是数组中大小相差最小的两个元素的差.(算法略) 对这个算法做尽可能多的改进.算法MinDistance(A[0..n-1])//输入:数组A[0..n-1]//输出:the smallest distance d between two of its elements习题1.31.考虑这样一个排序算法,该算法对于待排序的数组中的每一个元素,计算比它小的元素个数,然后利用这个信息,将各个元素放到有序数组的相应位置上去.a.应用该算法对列表‖60,35,81,98,14,47‖排序b.该算法稳定吗?c.该算法在位吗?解:a. 该算法对列表‖60,35,81,98,14,47‖排序的过程如下所示:b.该算法不稳定.比如对列表‖2,2*‖排序c.该算法不在位.额外空间for S and Count[] 4.(古老的七桥问题)习题1.41.请分别描述一下应该如何实现下列对数组的操作,使得操作时间不依赖数组的长度. a.删除数组的第i 个元素(1<=i<=n)b.删除有序数组的第i 个元素(依然有序) hints:a. Replace the i th element with the last element and decrease the array size of 1b. Replace the ith element with a special symbol that cannot be a value of the array ’s element(e.g., 0 for an array of positive numbers ) to mark the i th position is empty. (―lazy deletion ‖)第2章 习题2.17.对下列断言进行证明:(如果是错误的,请举例) a. 如果t(n )∈O(g(n),则g(n)∈Ω(t(n)) b.α>0时,Θ(αg(n))= Θ(g(n)) 解:a. 这个断言是正确的。
太原理工大学软件工程复习题

软件工程复习题一、单选题1、软件开发的结构化设计(SD)方法,全面指导模块划分的最重要原则应该是( c )A模块高内聚B模块低耦合C模块独立性D程序模块化2、软件工程方法的提出起源于软件危机,而其目的应该是最终解决软件的什么问题?( D )A产生危机B质量保证C开发效率D生产工程化3、软件工程开发的可行性研究是决定软件项目是否继续开发的关键,而可行性研究的结论主要相关于( A)A软件系统目标B软件的性能C软件的功能D软件的质量4、软件需求分析一般应确定的是用户对软件的( D)A.功能需求B.非功能需求C.性能需求D.功能需求和非功能需求5、软件测试是满足软件的功能和性能要求,保证软件正确性的措施,一般软件测试计划的制订应始于软件开发的哪个阶段? ( D)A.需求分析B.软件设计C.程序编码D.软件计划6、软件工程方法是在实践中不断发展的方法,而早期的软件工程方法主要是指( B )A.原型化方法B.结构化方法C.面向对象方法.D.功能分解法7、数据流图描述数据在软件中流动和被处理变换的过程,它是以图示的方法来表示,即.( A )A.软件模型B.软件功能C.软件结构D.软件加工8、软件工程学涉及到软件开发技术和工程管理两方面的内容,下述内容中哪一个不属于开发技术的范畴?(D)A.软件开发方法B.软件开发工具C.软件工程环境D.软件工程经济9、软件文档是软件工程实施中的重要成份,它不仅是软件开发的各阶段的重要依据,而且也影响软件的()A.可理解性B.可维护性C.可扩展性D.可靠性10、从( )语言开始,软件摆脱了对硬件的依赖。
A.第一代B.第二代C.第三代D.第四代11、在下面列出的基本成分中,哪个不是实体关系图的基本成分? ( )A.实体B.数据存储C.关系D属性12、结构化程序设计主要强调程序的(C)A.效率B.速度C.可读性D.大小13、在软件工程中根据程序的功能说明,而不关心程序内部逻辑的测试方法为( A)A.黑盒法B.白盒法C.灰盒法D.综合法14、软件开发的结构化分析方法,常用的描述软件功能需求的工具有( C)A业务流程图,数据字典 B.软件流程图,模块说明C.数据流图,数据字典D.系统流程图,程序编码15、结构化程序设计思想的核心是要求程序只由顺序、循环和( A)三种结构组成。
2021现代科技学院《软件技术基础》练习题+答案

2021现代科技学院《软件技术基础》练习题+答案《软件技术基础》练习题太原理工大学现代科技学院20211第一章算法一、选择题1.算法的复杂度包括【】。
a、时间复杂度b、空间复杂度c、时间及空间复杂度d、以上都不对2.若x在长度为n的无序线性顺序表的概率为50%,则在该表搜寻x的平均值搜寻次数(平均值性态分析)为【】。
a、(n*3+1)/4b、(n-1)/2c、(n+1)/2d、(n+1)*n/23.若x在长度为n的无序线性顺序表的概率为50%,则在该表搜寻x的最坏情况分析为【】。
a、n/2b、(n-1)/2c、(n+1)/2d、n4.未知基本运算继续执行次数与n的关系,则以下哪个时间复杂度最小:【】。
a.f(n)=1b.f(n)=2n-1c.f(n)=10000n+10000d.f(n)=n2-100005.算法分析的目的是【】。
a.找到数据结构的合理性b.研究算法中的输入和输出的关系c.分析算法的效率以求改进d.分析算法的易懂性和文档性二、填空题1.常用算法包括_________、_________、_________、_________、_________和回溯法。
2.算法的基本特征有_________、_________、有穷性、输入和输出。
3.下列程序段的时间复杂度是____。
for(i=1;i<=n;i++)a[i,i]=0;4.下列程序段的时间复杂度是____s=0;for(i=1;i<=2n;i++)for(j=1;j<=n;j++)s=s+b[i][j];sum=s;5.以下程序段的时间复杂度就是____i=1;2while(i<=n)i=i*2;6.在下面的程序段中,s=s+p;语句的执行次数为_________,p=p×j语句的执行次数为_________,该程序段的时间复杂度为________。
inti=0,s=0,p=1;while(++i<=n){for(j=1;j<=i;j++)p=p×j;s=s+p;}7.常用时间复杂度的量级存有:常数阶o(_________)、对数阶o(_________)、线性阶o(_________)、平方阶o(_________)和指数阶o(_________)。
太原理工大学软件测试课后题答案

第一章软件测试概述1.对软件缺陷有什么真实的体验?当登录某网站购物完毕并退出后,忽然想查查购物时付账的总金额,于是按了浏览器左上角的“退回”按钮,就又回到了退出前的网页。
该软件缺陷所属类别与软件产品说明书的要求有关。
2.以客户为导向来讨论软件测试的理念和作用判断软件是否存在缺陷的基本依据是软件的用户需求,软件功能特性就是为了满足用户需求,不能满足用户需求的功能是有缺陷的。
所以软件测试要服从用户需求,以用户需求为依据,来对产品进行检验。
软件测试的作用是尽可能多的发现软件中的错误。
3.给软件测试下定义,它的内容是什么?软件测试是由“验证”和“有效性确认”活动构成的整体:“验证”是检验软件是否已正确地实现了产品规格书所定义的系统功能和特性;“有效性确认”是确认所开发的软件是否满足用户真正需求的活动。
4.软件开发和软件测试是一种对立的关系吗?为什么?软件测试和软件开发并行的活动,使软件测试和软件开发相互协作、相互补充,构成有机的软件开发整体。
第二章需求和设计评审1.需求评审和设计评审可以同时进行吗?为什么?不能,需求评审一定要“从用户的角度”出发,基于用户需求,一切围绕用户需求进行评审,而设计评审一般依据设计技术的评审标准和非功能性质量特性的设计评审要求,采用分层评审和整体评审相结合的方法,经过整体评审到分层评审,再从分层评审到整体评审的过程,既能确保评审的深度,又能确保评审的一致性。
2.需求评审和设计评审有什么不同?从测试的观点看,产品需求评审是对需求的验证,属于静态测试,也是做好软件测试和理解设计等的基础性工作。
设计评审时,先从系统架构,整体功能结构上开始审查系统的非功能特性是否得到完美实现,然后深入到功能组件,操作逻辑和用户界面设计等各个方面的细节审查,力求发现任何不合理的设计以及设计缺陷,尽早地设计上的问题得到纠正。
3.在需求评审过程中,最有效的方法是什么?在需求形成的过程中,最好采用分阶段评审方法进行多次评审,而不是在需求最终形成后进行一次评审,分阶段评审可以将原本需要进行的大规模评审拆分成各个小规模的评审,降低了需求分析返工的风险,提高了评审的质量。
软考算法题库及答案详解

软考算法题库及答案详解1. 题目:给定一个整数数组,找出其中的最大值。
答案:使用线性搜索算法遍历数组中的每个元素,记录并更新最大值。
2. 题目:实现一个函数,判断一个链表是否为回文结构。
答案:首先将链表复制到数组中,然后使用双指针方法从两端向中间遍历,判断是否相等。
3. 题目:编写一个算法,计算两个字符串的最长公共子序列长度。
答案:使用动态规划方法,创建一个二维数组dp,其中dp[i][j]表示字符串1的前i个字符和字符串2的前j个字符的最长公共子序列长度。
遍历两个字符串,更新dp数组。
4. 题目:给定一个无序数组,找出其中第k大的元素。
答案:使用快速选择算法,通过随机选择一个元素作为基准,将数组分为两部分,一部分包含比基准小的元素,另一部分包含比基准大的元素。
根据k的值确定是否继续在左部分或右部分进行快速选择。
5. 题目:实现一个算法,将一个字符串反转。
答案:使用双指针方法,一个指针从字符串的开始位置,另一个指针从字符串的结束位置,逐个交换两个指针所指的字符。
6. 题目:给定一个整数n,打印所有可能的n位二进制数。
答案:使用回溯算法,从最低位开始,依次尝试0和1,直到达到n位。
7. 题目:编写一个函数,实现二分查找。
答案:首先确定数组是有序的,然后设置两个指针low和high分别指向数组的开始和结束。
计算中间位置mid,比较中间元素与目标值,如果相等则返回mid,如果目标值小于中间元素,则在左半部分继续查找,否则在右半部分继续查找。
8. 题目:给定一个二维矩阵,找出其中的最大值。
答案:遍历矩阵的每一行,记录每行的最大值,然后从这些行的最大值中找出整个矩阵的最大值。
9. 题目:实现一个算法,将一个栈转换为队列。
答案:使用两个栈,将原栈的所有元素依次压入第一个栈,然后依次将第一个栈的元素压入第二个栈,这样第二个栈就实现了队列的先进先出特性。
10. 题目:编写一个算法,实现归并排序。
答案:将数组分成两部分,直到每部分只有一个元素,然后递归地合并这些元素,直到整个数组被排序。
《计算机算法设计和分析》习题及答案解析

《计算机算法设计与分析》习题及答案一.选择题1、二分搜索算法是利用( A )实现的算法。
A、分治策略B、动态规划法C、贪心法D、回溯法2、下列不是动态规划算法基本步骤的是( A )。
A、找出最优解的性质B、构造最优解C、算出最优解D、定义最优解3、最大效益优先是(A )的一搜索方式。
A、分支界限法B、动态规划法C、贪心法D、回溯法4. 回溯法解旅行售货员问题时的解空间树是( A )。
A、子集树B、排列树C、深度优先生成树D、广度优先生成树5.下列算法中通常以自底向上的方式求解最优解的是(B )。
A、备忘录法B、动态规划法C、贪心法D、回溯法6、衡量一个算法好坏的标准是( C )。
A 运行速度快B 占用空间少C 时间复杂度低D 代码短7、以下不可以使用分治法求解的是( D )。
A 棋盘覆盖问题B 选择问题C 归并排序D 0/1背包问题8. 实现循环赛日程表利用的算法是(A )。
A、分治策略B、动态规划法C、贪心法D、回溯法9.下面不是分支界限法搜索方式的是(D )。
A、广度优先B、最小耗费优先C、最大效益优先D、深度优先10.下列算法中通常以深度优先方式系统搜索问题解的是(D )。
A、备忘录法B、动态规划法C、贪心法D、回溯法11.备忘录方法是那种算法的变形。
( B )A、分治法B、动态规划法C、贪心法D、回溯法12.哈夫曼编码的贪心算法所需的计算时间为(B )。
A、O(n2n)B、O(nlogn)C、O(2n)D、O(n)13.分支限界法解最大团问题时,活结点表的组织形式是(B )。
A、最小堆B、最大堆C、栈D、数组14.最长公共子序列算法利用的算法是(B)。
A、分支界限法B、动态规划法C、贪心法D、回溯法15.实现棋盘覆盖算法利用的算法是(A )。
A、分治法B、动态规划法C、贪心法D、回溯法16.下面是贪心算法的基本要素的是(C )。
A、重叠子问题B、构造最优解C、贪心选择性质D、定义最优解17.回溯法的效率不依赖于下列哪些因素( D )A.满足显约束的值的个数B. 计算约束函数的时间C.计算限界函数的时间D. 确定解空间的时间18.下面哪种函数是回溯法中为避免无效搜索采取的策略(B )A.递归函数 B.剪枝函数 C。
太原理工复试题《软件工程》题库及答案

太原理工复试题《软件工程》题库及答案1.开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称做(C)A.软件工程B.软件周期C.软件危机D.软件产生2.研究开发所需要的成本和资源是属于可行性研究中的(B )研究的一方面。
A.技术可行性B.经济可行性C.社会可行性D.法律可行性3.IDEF0图不反映出系统( B )A.系统做什么B.系统功能如何实现C.系统由谁来做D.系统实现的约束条件4.模块的内聚性最高的是( D )A.逻辑内聚B.时间内聚C.偶然内聚D.功能内聚5.在SD方法中全面指导模块划分的最重要的原则是( D )A.程序模块化B.模块高内聚C.模块低耦合D.模块独立性6.软件详细设计主要采用的方法是( D )A.模块设计B.结构化设计C.PDL语言D.结构化程序设计7.下列关于JSP方法不正确的说法是( D )A.JSP方法主要用于规模不大的数据处理系统B.JSP方法不明确的划分软件概要设计和详细设计的两个阶段C.JSP方法适用于输入数据和输出数据之间有对应关系的问题求解D.JSP方法根据输入、输出的数据结构,按一定的规则映射成软件的体系结构。
因此它只适用于详细设计阶段8.不适合作为科学工程计算的语言是( D )A. PascalB. CC. FortranD. Prolog9.黑盒测试在设计测试用例时,主要需要研究( A )A.需求规格说明与概要设计说明B.详细设计说明C.项目开发计划D.概要设计说明与详细设计说明10.若有一个计算类型的程序,它的输入量只有一个X,其范围是[-1.0,1.0],现从输入的角度考虑一组测试用例:-1.001,-1.0,1.0,1.001。
设计这组测试用例的方法是( C )A.条件覆盖法B.等价分类法C.边界值分析法D.错误推测法11.下列属于维护阶段的文档是( C )A.软件规格说明B.用户操作手册C.软件问题报告D.软件测试分析报告12.快速原型模型的主要特点之一是( D )A.开发完毕才见到产品B.及早提供全部完整的软件产品C.开发完毕后才见到工作软件D.及早提供工作软件13.因计算机硬件和软件环境的变化而做出的修改软件的过程称为( B )A.较正性维护B.适应性维护C.完善性维D.预防性维护14.类库这种机制是( D )级别的信息共享。
Java习题答案_太原理工大学软件工程(2)

Java习题答案_太原理⼯⼤学软件⼯程(2)太原理⼯⼤学·Java语⾔程序设计(2)第5章习题解答1.使⽤抽象和封装有哪些好处?答:抽象是⼈们解决问题的基本⼿段,程序设计过程中需要对问题领域进⾏分析、设计中得出的抽象概念,然后封装成⼀些类。
封装也称为信息隐藏,是指利⽤抽象数据类型将数据和基于数据的操作封装在⼀起,使其构成⼀个不可分割的独⽴实体,数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留⼀些对外接⼝使之与外部发⽣联系。
系统的其他部分只有通过包裹在数据外⾯的被授权的操作来与这个抽象数据类型交流与交互。
也就是说,⽤户⽆需知道对象内部⽅法的实现细节,但可以根据对象提供的外部接⼝(对象名和参数)访问该对象。
把对象中相同或相似地地⽅抽象出来,从特殊到⼀半,从具体到抽象的过程,对象经过抽象得到类,类的实例化成了对象。
也可以⾼度抽象成接⼝,让不完全相同,但包含相同点的对象实现此接⼝,也就是利⽤多态实现。
把相同点抽象出来,抽象成此类或接⼝的⽅法、属性、字段等,封装就是隐藏某个对象的与其基本特性没有很⼤关系的所有详细信息的过程,就是将需要让其他类知道的暴露出来,不需要让其他类了解的全部隐藏起来,封装可以阻⽌对不需要信息的访问,我们可以使⽤访问指定符实现封装,也可以使⽤⽅法实现封装,可以将隐藏的信息作为参数或者属性值、字段指传给公共的接⼝或⽅法,以实现隐藏起来的信息和公开信息的交互。
封装的⽬的就是为了实现“⾼内聚,低耦合”。
⾼内聚就是类的内部数据操作细节⾃⼰完成,不允许外部⼲涉,就是这个类只完成⾃⼰的功能,不需要外部参与;低耦合,就是仅暴露很少的⽅法给外部使⽤。
2.构造⽅法的作⽤是什么?它与⼀般的成员⽅法在使⽤和定义⽅⾯有什么区别?答:构造⽅法⽤于⽣成⼀个对象实例,并对对象实例中的成员变量初始化。
当⽤new创建⼀个类的新的对象时,构造⽅法⽴即执⾏。
构造⽅法名字必须与类名相同。
3.Overload和Override的区别?答:⽅法重载(overloading)与⽅法覆盖(overriding)是实现多态性的基本⼿段,但两者的机制不同。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、选择题1、二分搜索算法是利用(A )实现的算法。
A、分治策略B、动态规划法C、贪心法D、回溯法2、下列不是动态规划算法基本步骤的是(A )。
A、找出最优解的性质B、构造最优解C、算出最优解D、定义最优解3、最大效益优先是(A )的搜索方式。
A、分支界限法B、动态规划法C、贪心法D、回溯法4. 回溯法解旅行售货员问题时的解空间树是(B)。
A、子集树B、排列树C、深度优先生成树D、广度优先生成树5.下列算法中通常以自底向上的方式求解最优解的是(B )。
A、备忘录法B、动态规划法C、贪心法D、回溯法6、衡量一个算法好坏的标准是(C )。
A 运行速度快B 占用空间少C 时间复杂度低D 代码短7、以下不可以使用分治法求解的是(D )。
A 棋盘覆盖问题B 选择问题C 归并排序D 0/1背包问题8. 实现循环赛日程表利用的算法是(A )。
A、分治策略B、动态规划法C、贪心法D、回溯法9.下面不是分支界限法搜索方式的是(D )。
A、广度优先B、最小耗费优先C、最大效益优先D、深度优先10.下列算法中通常以深度优先方式系统搜索问题解的是(D )。
A、备忘录法B、动态规划法C、贪心法D、回溯法11.备忘录方法是那种算法的变形。
( B )A、分治法B、动态规划法C、贪心法D、回溯法12.最长公共子序列算法利用的算法是(B )。
A、分支界限法B、动态规划法C、贪心法D、回溯法13.实现棋盘覆盖算法利用的算法是(A )。
A、分治法B、动态规划法C、贪心法D、回溯法14.下面是贪心算法的基本要素的是(C )。
A、重叠子问题B、构造最优解C、贪心选择性质D、定义最优解15.回溯法的效率不依赖于下列哪些因素( D )A. 满足显约束的值的个数B. 计算约束函数的时间C. 计算限界函数的时间D. 确定解空间的时间16.下面哪种函数是回溯法中为避免无效搜索采取的策略(B )A.递归函数 B.剪枝函数 C.随机数函数 D.搜索函数17.(D )是贪心算法与动态规划算法的共同点。
A、重叠子问题B、构造最优解C、贪心选择性质D、最优子结构性质18. 矩阵连乘问题的算法可由(B)设计实现。
A、分支界限算法B、动态规划算法C、贪心算法D、回溯算法19. 分支限界法解旅行售货员问题时,活结点表的组织形式是(A )。
A、最小堆B、最大堆C、栈D、数组20、Strassen矩阵乘法是利用(A )实现的算法。
A、分治策略B、动态规划法C、贪心法D、回溯法21、使用分治法求解不需要满足的条件是(A )。
A 子问题必须是一样的B 子问题不能够重复C 子问题的解可以合并D 原问题和子问题使用相同的方法解22、下面问题(B )不能使用贪心法解决。
A 单源最短路径问题B N皇后问题C 最小花费生成树问题D 背包问题23、下列算法中不能解决0/1背包问题的是(A )A 贪心法B 动态规划C 回溯法D 分支限界法24、回溯法搜索状态空间树是按照(C )的顺序。
A 中序遍历B 广度优先遍历C 深度优先遍历D 层次优先遍历25.实现合并排序利用的算法是(A )。
A、分治策略B、动态规划法C、贪心法D、回溯法26.下列是动态规划算法基本要素的是(D )。
A、定义最优解B、构造最优解C、算出最优解D、子问题重叠性质27.下列算法中通常以自底向下的方式求解最优解的是(B )。
A、分治法B、动态规划法C、贪心法D、回溯法28.采用广度优先策略搜索的算法是(A )。
A、分支界限法B、动态规划法C、贪心法D、回溯法29、合并排序算法是利用(A)实现的算法。
A、分治策略B、动态规划法C、贪心法D、回溯法30、背包问题的贪心算法所需的计算时间为(B )A、O(n2n)B、O(nlogn)C、O(2n)D、O(n)31.实现大整数的乘法是利用的算法(C )。
A、贪心法B、动态规划法C、分治策略D、回溯法32.0-1背包问题的回溯算法所需的计算时间为(A )A、O(n2n)B、O(nlogn)C、O(2n)D、O(n)33.采用最大效益优先搜索方式的算法是(A )。
A、分支界限法B、动态规划法C、贪心法D、回溯法34.贪心算法与动态规划算法的主要区别是(B )。
A、最优子结构B、贪心选择性质C、构造最优解D、定义最优解35.优先队列式分支限界法选取扩展结点的原则是(C )。
A、先进先出B、后进先出C、结点的优先级D、随机36.背包问题的贪心算法所需的计算时间为(B )。
A、O(n2n)B、O(nlogn)C、O(2n)D、O(n)37、广度优先是(A )的搜索方式。
A、分支界限法B、动态规划法C、贪心法D、回溯法38. 一个问题可用动态规划算法或贪心算法求解的关键特征是问题的(B )。
A、重叠子问题B、最优子结构性质C、贪心选择性质D、定义最优解39.采用贪心算法的最优装载问题的主要计算量在于将集装箱依其重量从小到大排序,故算法的时间复杂度为(B ) 。
A、O(n2n)B、O(nlogn)C、O(2n)D、O(n)40. 以深度优先方式系统搜索问题解的算法称为( D ) 。
A、分支界限算法B、概率算法C、贪心算法D、回溯算法41. 实现最长公共子序列利用的算法是(B )。
A、分治策略B、动态规划法C、贪心法D、回溯法42、算法是由若干条指令组成的有穷序列,而且满足以下性质(D)(1)输入:有0个或多个输入(2)输出:至少有一个输出(3)确定性:指令清晰,无歧义(4)有限性:指令执行次数有限,而且执行时间有限A (1)(2)(3) B(1)(2)(4) C(1)(3)(4) D (1) (2)(3)(4)43、函数32n+10nlog n的渐进表达式是( B ).A. 2nB. 32nC. nlog nD. 10nlog n44、大整数乘法算法是( A ).算法A.分治B.贪心C.动态规划D.穷举45、解决活动安排问题,最好用(B )算法A.分治B.贪心C.动态规划D.穷举46、设f(N),g(N)是定义在正数集上的正函数,如果存在正的常数C和自然数N0,使得当N≥N0时有f(N)≤Cg(N),则称函数f(N)当N充分大时有下界g(N),记作f(N)∈○(g(N)),即f(N)的阶( A )g(N)的阶.A.不高于B.不低于C.等价于D.逼近47、回溯法在解空间树T上的搜索方式是( A ).A.深度优先B.广度优先C.最小耗费优先D.活结点优先48、回溯算法和分支限界法的问题的解空间树不会是(D).A.有序树B.子集树C.排列树D.无序树49、在对问题的解空间树进行搜索的方法中,一个活结点最多有一次机会成为活结点的是( B ).A.回溯法B.分支限界法C.回溯法和分支限界法D.回溯法求解子集树问题50、从活结点表中选择下一个扩展结点的不同方式将导致不同的分支限界法,以下除( C )之外都是最常见的方式.A.队列式分支限界法B.优先队列式分支限界法C.栈式分支限界法分支限界法二、填空题1.算法的复杂性有时间复杂性和空间复杂性之分。
2、程序是算法用某种程序设计语言的具体实现。
3、算法的“确定性”指的是组成算法的每条指令是清晰的,无歧义的。
4.矩阵连乘问题的算法可由动态规划设计实现。
5、算法是指解决问题的一种方法或一个过程。
6、从分治法的一般设计模式可以看出,用它设计出的程序一般是递归算法。
7、问题的最优子结构性质是该问题可用动态规划算法或贪心算法求解的关键特征。
8、以深度优先方式系统搜索问题解的算法称为回溯法。
9、计算一个算法时间复杂度通常可以计算循环次数、基本操作的频率或计算步。
10、解决0/1背包问题可以使用动态规划、回溯法和分支限界法,其中不需要排序的是动态规划,需要排序的是回溯法,分支限界法。
11、使用回溯法进行状态空间树裁剪分支时一般有两个标准:约束条件和目标函数的界,N皇后问题和0/1背包问题正好是两种不同的类型,其中同时使用约束条件和目标函数的界进行裁剪的是0/1背包问题,只使用约束条件进行裁剪的是N皇后问题。
12、贪心选择性质是贪心算法可行的第一个基本要素,也是贪心算法与动态规划算法的主要区别。
13、矩阵连乘问题的算法可由动态规划设计实现。
14.贪心算法的基本要素是贪心选择性质和最优子结构性质。
15. 动态规划算法的基本思想是将待求解问题分解成若干子问题,先求解子问题,然后从这些子问题的解得到原问题的解。
16.算法是由若干条指令组成的有穷序列,且要满足输入、输出、确定性和有限性四条性质。
17、大整数乘积算法是用分治法来设计的。
18、以广度优先或以最小耗费方式搜索问题解的算法称为分支限界法。
19、贪心选择性质是贪心算法可行的第一个基本要素,也是贪心算法与动态规划算法的主要区别。
20.快速排序算法是基于分治策略的一种排序算法。
21.动态规划算法的两个基本要素是最优子结构性质和重叠子问题性质。
22.回溯法是一种既带有系统性又带有跳跃性的搜索算法。
23.分支限界法主要有队列式(FIFO)分支限界法和优先队列式分支限界法。
24.分支限界法是一种既带有系统性又带有跳跃性的搜索算法。
25.回溯法搜索解空间树时,常用的两种剪枝函数为约束函数和限界函数。
26.任何可用计算机求解的问题所需的时间都与其规模有关。
27.快速排序算法的性能取决于划分的对称性。
28. Prim算法利用贪心策略求解最小生成树问题,其时间复杂度是O(n2)。
29. 图的m着色问题可用回溯法求解,其解空间树中叶子结点个数是m n,解空间树中每个内结点的孩子数是m。
三、算法的程序填空1.背包问题的贪心算法void Knapsack(int n,float M,float v[],float w[],float x[]){Sort(n,v,w);int i;for (i=1;i<=n;i++) x[i]=0;float c=M;for (i=1;i<=n;i++) {if (w[i]>c) break;x[i]=1;c - =w[i];}if (i<=n) x[i]=c/w[i];}2.最大子段和: 动态规划算法int MaxSum(int n, int a[]){int sum=0, b=0;速排序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); 列问题Template <class Type>void perm(Type list[], int k, int m ){ 定已按升序排好序的n个元素a[0:n-1],现要在这n个元素中找出一特定元素x。