计算机算法试题有答案
计算机算法试题(含答案)
计算机算法试题(含答案)算法设计与分析试卷一、填空题(20分,每空2分)1、算法的性质包括输入、输出、___、有限性。
2、动态规划算法的基本思想就将待求问题_____、先求解子问题,然后从这些子问题的解得到原问题的解。
3、设计动态规划算法的4个步骤:(1)找出____,并刻画其结构特征。
(2)_______。
(3)_______。
(4)根据计算最优值得到的信息,_______。
4、流水作业调度问题的johnson算法:(1)令N1=___,N2={i|ai>=bj};(2)将N1中作业依ai的___。
5、对于流水作业高度问题,必存在一个最优调度π,使得作业π(i)和π(i+1)满足Johnson不等式_____。
6、最优二叉搜索树即是___的二叉搜索树。
二、综合题(50分)1、当(a1,a2,a3,a4,a5,a6)=(-2,11,-4,13,-5,-2)时,最大子段和为∑ak(2<=k<=4)____(5分)2、由流水作业调度问题的最优子结构性质可知,T(N,0)=______(5分)3、最大子段和问题的简单算法(10分)int maxsum(int n,int *a,int & bestj){intsum=0;for (int i=1;i<=n;i++)for (int j=i;j<=n;j++)int thissum=0;for(int k=i;k<=j;k++)_____;if(thissum>sum){sum=thissum;______;bestj=j;}} return sum;}4、设计最优二叉搜索树问题的动态规划算法OptimalBinarysearchTree (15分)Void OptimalBinarysearchTree(int a,int n,int * * m, int* * w){for(int i=0;i<=n;i++) {w[i+1][i]=a[i]; m[i+1][i]=____;}for(int r=0;r<n;r++)< p="">for(int i=1;i<=n-r;i++){int j=i+r;w[i][j]=w[i][j-1]+a[j]+b[j];m[i][j]=______;s[i][j]=i;for(int k=i+1;k<=j;k++){int t=m[i][k-1]+m[k+1][j];if(_____) {m[i][j]=t; s[i][j]=k;}}m[i][j]=t; s[i][j]=k;}}5、设n=4, (a1,a2,a3,a4)=(3,4,8,10), (b1,b2,b3,b4)=(6,2,9,15) 用两种方法求4个作业的最优调度方案并计算其最优值(15分)三、简答题(30分)1、将所给定序列a[1:n]分为长度相等的两段a[1:n/2]和a[n/2+1:n],分别求出这两段的最大子段和,则a[1:n]的最大子段和有哪三种情形(10分)答:2、由0——1背包问题的最优子结构性质,可以对m(i,j)建立怎样的递归式 (10分)3、0——1背包求最优值的步骤分为哪几步(10分)参考答案:填空题:确定性分解成若干个子问题最优解的性质递归地定义最优值以自底向上的方式计算出最优值构造最优解 {i|ai<="" p="">依bi的非增序排序min{bπ(i),aπ(i+1)}≥min{bπ(i+1),aπ(i)}最小平均查找长度综合题:20 min{ai+T(N-{i},bi)}(1=<i<=n) 0="" besti="i" m[i+1][j]="" p="" t<m[i][j]<="" thissum+="a[k]">法一:min(ai,bj)<=min(aj,bi)因为 min(a1,b2)<=min(a2,b1)所以1→2 (先1后2)由 min(a1,b3)<=min(a3,b1)得1→3 (先1后3)同理可得:最后为1→3→4→2法二:johnson算法思想N1={1,3,4} N2={2}N11={1,3,4} N12={2}所以N11→N12得:1→3→4→2简答题:1 、(1)a[1:n]的最大子段和与a[1:n/2]的最大子段和相同。
《算法与程序设计》试题带答案
12、在调试程序的时候,经常要设置断点,设置断点的快捷键是()高一第二学期《算法与程序设计》学分认定试题A、F1B、F8C、F9D、F1213、算法描述可以有多种表达方法,下面哪些方法不可以描述“闰年问题”的算法()学校:_____________ 班级:____________ 学号:____________ 姓名:____________ A、自然语言B、流程图C、伪代码D、机器语言14、以下不属于非法用户自定义标识符(常量和变量命名)的是()一、单选题(每小题 3 分,20 小题,共60 分)A、8adB、ad8C、_a8dD、const1、用计算机解决问题时,首先应该确定程序“做什么?”,然后再确定程序“如何做?”请问“如何做?”是属于15、已知A,B,C,D 是整型变量,且都已有互不相同的值,执行语句B=0;A=C ;D=A ;D=B ;后,其值相等的用计算机解决问题的哪一个步骤?()变量是()A、分析问题B、设计算法C、编写程序D、调试程序A、A,DB、A,CC、C,BD、B,A2、在调试程序过程中,下列哪一种错误是计算机检查不出来的?()16、要交换变量 A 和B 的值,应使用的语句组是( )A、编译错误B、执行错误C、逻辑错误D、任何错误计算机都能检查出来A、A=B ;B=C;C=AB、C=A ;A=B ;B=C3、下列关于算法的叙述中,错误的是()C、A=B ;B=AD、C=A ;B=A ;B=CA、一个算法至少有一个输入和一个输出17、Visual Basic 中以单引号开头一行文字称为注释,它对程序的运行()B、算法的每一个步骤必须确切地定义A、起一定作用 B 、有时候起作用C、一个算法在执行有穷步之后必须结束C、不起任何作用,但是必须的D、不起任何作用,但能增加程序的可阅读性D、算法中有待执行的运算和操作必须是相当基本的。
18、要使一个命令按钮显示文字“确定”,正确的设置是把该命令按钮的()。
计算机数学试题及答案
计算机数学试题及答案一、选择题(每题2分,共10分)1. 在计算机科学中,二进制数1011转换为十进制数是多少?A. 8B. 9C. 11D. 13答案:C2. 下列哪个选项不是计算机算法的特性?A. 有限性B. 确定性C. 通用性D. 可行性答案:C3. 在计算机存储中,1KB等于多少字节?A. 1024B. 512C. 1000D. 2048答案:A4. 计算机中的浮点数通常采用哪种表示法?A. 定点表示法B. 科学记数法C. 指数表示法D. 十进制表示法答案:C5. 计算机中的逻辑运算符AND、OR和NOT分别对应于哪些运算?A. 与、或、非B. 或、与、非C. 非、与、或D. 与、非、或答案:A二、填空题(每空1分,共10分)1. 计算机中的二进制数是由0和__1__组成。
2. 计算机程序设计语言通常分为__机器语言__、汇编语言和高级语言。
3. 计算机中的存储器分为__随机存取存储器(RAM)__和只读存储器(ROM)。
4. 计算机中的逻辑运算AND、OR和NOT分别用符号__&&__、||和!表示。
5. 计算机中的二进制数1010转换为十进制数是__10__。
三、简答题(每题5分,共20分)1. 简述计算机算法的基本特征。
答:计算机算法具有有限性、确定性、可行性和输入输出性。
2. 计算机中的二进制数和十进制数有什么区别?答:二进制数只有0和1两个数字,而十进制数有0到9十个数字。
二进制数适合计算机处理,而十进制数更符合人类的计数习惯。
3. 计算机中的浮点数表示法有哪些优点?答:浮点数表示法可以表示非常大或非常小的数,且精度高,适用于科学计算。
4. 计算机中的存储器为什么需要分为RAM和ROM?答:RAM用于存储临时数据,断电后数据会丢失,而ROM用于存储固定程序和数据,断电后数据不会丢失。
这种区分可以提高计算机的运行效率和数据安全性。
结束语:通过本试题的练习,可以加深对计算机数学基础知识的理解和掌握,为进一步学习计算机科学打下坚实的基础。
计算机算法设计与分析-试题
计算机算法设计与分析期末试题一。
选择题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. 回溯法解旅行售货员问题时的解空间树是( A )。
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、回溯法10、下列随机算法中运行时有时候成功有时候失败的是(C )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 )。
c acm试题及答案
c acm试题及答案ACM(Association for Computing Machinery)是计算机科学领域的国际性学术组织,旨在推动计算机科学的发展与研究。
ACM竞赛是ACM组织举办的一项计算机算法编程竞赛,每年都有数以千计的计算机专业学生参加。
这篇文章将介绍一道ACM试题,并提供解答。
题目描述:给定一个整数数组nums,其中所有元素都是非负整数,现在要求你计算nums中连续子数组的最大和,并输出该最大和。
输入:第一行输入一个整数n,表示数组长度(1 <= n <= 10^5)。
第二行输入n个整数,表示数组nums的元素(元素范围为0 <= nums[i] <= 100)。
输出:输出一个整数,表示nums中连续子数组的最大和。
示例:输入:51 2 3 4 5输出:15解释:最大和子数组为[1, 2, 3, 4, 5],和为15。
解答:首先,我们可以使用一个变量maxSum来记录当前得到的最大和,初始化为0。
同时,我们还使用一个变量sum来记录当前连续子数组的和,初始化为0。
接下来,我们对数组nums进行遍历。
对于每一个元素nums[i],我们将其加到sum中,并判断sum是否大于0。
如果sum大于0,说明当前连续子数组的和对后面的结果是有正向贡献的,我们可以继续累加后面的元素。
如果sum小于等于0,说明当前连续子数组的和对后面的结果没有正向贡献,我们可以将sum重新置为0,重新开始计算连续子数组的和。
在遍历过程中,我们不断更新maxSum的值,保证其为当前得到的最大和。
最终,遍历结束后的maxSum即为所求的最大和。
下面是具体的实现代码:```cpp#include <iostream>#include <vector>#include <algorithm>using namespace std;int maxSubArray(vector<int>& nums) { int maxSum = 0;int sum = 0;for(int i = 0; i < nums.size(); i++) { sum += nums[i];if(sum > maxSum) {maxSum = sum;}if(sum <= 0) {sum = 0;}}return maxSum;}int main() {int n;cin >> n;vector<int> nums(n);for(int i = 0; i < n; i++) {cin >> nums[i];}int result = maxSubArray(nums);cout << result << endl;return 0;}```以上就是解答c acm试题并提供相应代码的文章。
大学计算机raptor试题及答案
大学计算机raptor试题及答案一、选择题(每题2分,共20分)1. 在计算机科学中,Raptor通常指的是什么?A. 一种编程语言B. 一种数据库管理系统C. 一种计算机病毒D. 一种数据压缩算法答案:D2. 下列哪个选项是Raptor算法的主要特点?A. 高效的数据压缩B. 高度的安全性C. 快速的数据处理D. 强大的图形处理能力答案:A3. Raptor算法在数据压缩中使用的是什么技术?A. 哈夫曼编码B. 无损压缩C. 有损压缩D. 差分编码答案:B4. Raptor算法的压缩效率通常受到哪些因素的影响?A. 数据的冗余度B. 数据的复杂度C. 数据的格式D. 所有上述因素答案:D5. 在Raptor算法中,数据压缩的比率通常可以达到多少?A. 10%B. 50%C. 80%D. 90%答案:C二、填空题(每题2分,共10分)1. Raptor算法是一种_________压缩算法,它可以有效地减少数据的存储空间。
答案:无损2. Raptor算法在处理数据时,主要通过_________来实现数据的压缩。
答案:哈夫曼编码3. Raptor算法的压缩效率与数据的_________有关,冗余度越高,压缩效率越低。
答案:冗余度4. Raptor算法可以应用于多种数据格式,包括文本、图片和_________。
答案:视频5. 在实际应用中,Raptor算法的压缩比率通常可以达到_________以上。
答案:80%三、简答题(每题5分,共20分)1. 请简述Raptor算法的工作原理。
答案:Raptor算法通过分析数据中的冗余信息,使用哈夫曼编码等无损压缩技术,将数据中的重复模式替换为更短的编码,从而实现数据的高效压缩。
2. Raptor算法在数据压缩中有哪些优势?答案:Raptor算法的优势包括高压缩比、快速处理速度、广泛的数据格式兼容性以及无损压缩的特性,保证了数据压缩后的质量。
3. 为什么Raptor算法在实际应用中受到欢迎?答案:Raptor算法因其高效、无损的压缩特性,广泛应用于数据存储、网络传输等领域,有效节省了存储空间和传输带宽,提高了数据处理的效率。
数学计算机试题及答案
数学计算机试题及答案一、选择题(每题3分,共30分)1. 下列哪个选项是计算机中常用的数据单位?A. 米B. 秒C. 比特D. 千克答案:C2. 在计算机科学中,算法的时间复杂度通常用来描述什么?A. 算法的运行时间B. 算法占用的存储空间C. 算法的可读性D. 算法的复杂性答案:A3. 在二进制数系统中,数字“1011”代表的十进制数是多少?A. 10B. 11C. 12D. 13答案:B4. 以下哪个选项是计算机程序设计语言?A. 英语B. 法语C. PythonD. 德语5. 计算机硬件中的CPU代表什么?A. 中央处理器B. 中央存储器C. 中央输入设备D. 中央输出设备答案:A6. 在计算机系统中,RAM代表什么?A. 随机存取存储器B. 只读存储器C. 可编程只读存储器D. 硬盘存储器答案:A7. 以下哪个选项是计算机操作系统的功能?A. 管理计算机硬件资源B. 为用户编写程序C. 为用户设计软件D. 为用户创建文档答案:A8. 在计算机科学中,什么是递归?A. 重复执行相同的操作B. 将问题分解成更小的问题C. 一个函数调用另一个函数D. 一个函数调用自身答案:D9. 以下哪个选项是计算机网络中的协议?B. FTPC. SMTPD. 所有选项答案:D10. 在数据库管理系统中,SQL代表什么?A. 结构化查询语言B. 序列化查询语言C. 同步查询语言D. 同步查询逻辑答案:A二、填空题(每题2分,共20分)1. 在计算机科学中,______是一种使用布尔逻辑来表示和操作数据的方法。
答案:逻辑电路2. 计算机程序中的______是一种数据结构,它按照元素的顺序存储数据。
答案:数组3. 在计算机系统中,______是一种用于存储数据的非易失性存储器。
答案:硬盘4. 在编程语言中,______是一种控制结构,允许程序在满足特定条件时重复执行代码块。
答案:循环5. 在计算机网络中,______是一种用于在网络中传输数据的协议。
计算机算法基础试题及答案
计算机算法基础试题及答案一、选择题1. 在计算机中,算法的特点不包括:A. 有穷性B. 确定性C. 可行性D. 可终止性答案:B2. 下列哪个不是算法的评价指标?A. 空间复杂度B. 时间复杂度C. 可读性D. 精确性答案:C3. 以下哪种排序算法的最差时间复杂度是O(n^2)?A. 快速排序B. 堆排序C. 归并排序D. 冒泡排序答案:D4. 广度优先搜索算法(BFS)的时间复杂度是:A. O(n)B. O(nlogn)C. O(n^2)D. O(n^3)答案:A5. 是否正确:在二分查找算法中,要求待查找的序列必须是有序的。
A. 正确B. 错误答案:A二、填空题1. 下列不属于常见的基本排序算法的是_______排序。
答案:希尔排序2. 在随机生成的n个数中使用二分查找,最坏情况下的时间复杂度为_______。
答案:O(logn)3. 在图的遍历中,栈或队列常用于辅助实现_______搜索算法。
答案:深度优先和广度优先4. 当n足够大时,时间复杂度为O(nlogn)的排序算法一般包括_______和_______。
答案:归并排序和快速排序5. 在递归算法中,必须包含递归结束的_______条件。
答案:基本三、简答题1. 请解释什么是时间复杂度和空间复杂度,并分别举例说明。
答:时间复杂度是对算法执行时间的衡量,表示该算法所需时间资源的多少。
常见的时间复杂度有O(1)、O(logn)、O(n)、O(nlogn)、O(n^2)等,其中O(1)表示常数时间,O(n)表示线性时间,O(n^2)表示平方时间。
空间复杂度是对算法执行所需空间资源的衡量,表示该算法所需的额外空间大小。
常见的空间复杂度有O(1)、O(n)等,其中O(1)表示常数空间,O(n)表示线性空间。
举例说明:以排序算法为例,冒泡排序的时间复杂度是O(n^2),空间复杂度是O(1);归并排序的时间复杂度是O(nlogn),空间复杂度是O(n)。
算法题__计算机算法设计与分析期末试题4套(含答案)
(1)用计算机求解问题的步骤:1、问题分析2、数学模型建立3、算法设计与选择4、算法指标5、算法分析6、算法实现7、程序调试8、结果整理文档编制(2)算法定义:算法是指在解决问题时,按照某种机械步骤一定可以得到问题结果的处理过程(3)算法的三要素1、操作2、控制结构3、数据结构算法具有以下5个属性:有穷性:一个算法必须总是在执行有穷步之后结束,且每一步都在有穷时间内完成。
确定性:算法中每一条指令必须有确切的含义。
不存在二义性。
只有一个入口和一个出口可行性:一个算法是可行的就是算法描述的操作是可以通过已经实现的基本运算执行有限次来实现的。
输入:一个算法有零个或多个输入,这些输入取自于某个特定对象的集合。
输出:一个算法有一个或多个输出,这些输出同输入有着某些特定关系的量。
算法设计的质量指标:正确性:算法应满足具体问题的需求;可读性:算法应该好读,以有利于读者对程序的理解;健壮性:算法应具有容错处理,当输入为非法数据时,算法应对其作出反应,而不是产生莫名其妙的输出结果。
效率与存储量需求:效率指的是算法执行的时间;存储量需求指算法执行过程中所需要的最大存储空间。
一般这两者与问题的规模有关。
经常采用的算法主要有迭代法、分而治之法、贪婪法、动态规划法、回溯法、分支限界法迭代法也称“辗转法”,是一种不断用变量的旧值递推出新值的解决问题的方法。
利用迭代算法解决问题,需要做好以下三个方面的工作:一、确定迭代模型。
在可以用迭代算法解决的问题中,至少存在一个直接或间接地不断由旧值递推出新值的变量,这个变量就是迭代变量。
二、建立迭代关系式。
所谓迭代关系式,指如何从变量的前一个值推出其下一个值的公式(或关系)。
迭代关系式的建立是解决迭代问题的关键,通常可以使用递推或倒推的方法来完成。
三、对迭代过程进行控制。
在什么时候结束迭代过程?这是编写迭代程序必须考虑的问题。
不能让迭代过程无休止地重复执行下去。
迭代过程的控制通常可分为两种情况:一种是所需的迭代次数是个确定的值,可以计算出来;另一种是所需的迭代次数无法确定。
《算法分析与设计》期末试题及参考答案
《算法分析与设计》期末试题及参考答案一、简要回答下列问题:1.算法重要特性是什么?1. 确定性、可行性、输入、输出、有穷性2.2.算法分析的目的是什么?2. 分析算法占用计算机资源的情况,对算法做出比较和评价,设计出额更好的算法。
3.3.算法的时间复杂性与问题的什么因素相关?3. 算法的时间复杂性与问题的规模相关,是问题大小n的函数。
4.算法的渐进时间复杂性的含义?4.当问题的规模n趋向无穷大时,影响算法效率的重要因素是T(n)的数量级,而其他因素仅是使时间复杂度相差常数倍,因此可以用T(n)的数量级(阶)评价算法。
时间复杂度T(n)的数量级(阶)称为渐进时间复杂性。
5.最坏情况下的时间复杂性和平均时间复杂性有什么不同?5. 最坏情况下的时间复杂性和平均时间复杂性考察的是n固定时,不同输入实例下的算法所耗时间。
最坏情况下的时间复杂性取的输入实例中最大的时间复杂度:W(n) = max{ T(n,I) } , I∈Dn平均时间复杂性是所有输入实例的处理时间与各自概率的乘积和:A(n) =∑P(I)T(n,I) I∈Dn6.简述二分检索(折半查找)算法的基本过程。
6. 设输入是一个按非降次序排列的元素表A[i:j] 和x,选取A[(i+j)/2]与x比较,如果A[(i+j)/2]=x,则返回(i+j)/2,如果A[(i+j)/2]<x,则A[i:(i+j)/2-1]找x,否则在A[ (i+j)/2+1:j] 找x。
上述过程被反复递归调用。
7.背包问题的目标函数和贪心算法最优化量度相同吗?7. 不相同。
目标函数:获得最大利润。
最优量度:最大利润/重量比。
8.采用回溯法求解的问题,其解如何表示?有什么规定?8. 问题的解可以表示为n元组:(x1,x2,……x n),x i∈S i, S i为有穷集合,x i∈S i, (x1,x2,……x n)具备完备性,即(x1,x2,……x n)是合理的,则(x1,x2,……x i)(i<n)一定合理。
计算机算法面试题及答案
计算机算法面试题及答案1. 问题:请解释什么是时间复杂度,并给出一个例子。
答案:时间复杂度是衡量算法运行时间与输入规模之间关系的量度。
它通常用大O符号表示,例如O(n)、O(n^2)等。
一个例子是冒泡排序算法,其时间复杂度为O(n^2),因为当数组长度为n时,它需要进行n*(n-1)/2次比较。
2. 问题:描述快速排序算法的过程。
答案:快速排序是一种分治算法,它通过选择一个“基准”元素,将数组分为两部分,一部分包含小于基准的元素,另一部分包含大于基准的元素。
然后递归地对这两部分进行快速排序,直到每个子数组只有一个元素或者为空。
3. 问题:什么是动态规划?请给出一个应用实例。
答案:动态规划是一种通过将复杂问题分解为更小的子问题来解决的方法,并且通过记忆已解决的子问题的结果来避免重复计算。
一个典型的应用实例是斐波那契数列的计算,通过动态规划可以避免大量的重复计算,从而提高效率。
4. 问题:解释图的深度优先搜索(DFS)算法。
答案:深度优先搜索是一种用于遍历或搜索树或图的算法。
它从一个节点开始,尽可能深地搜索树的分支,直到达到一个叶节点,然后回溯到上一个节点,继续搜索下一个分支,直到所有节点都被访问过。
5. 问题:请描述堆排序算法的工作原理。
答案:堆排序是一种基于比较的排序算法,它利用了二叉堆的数据结构。
算法的核心是构建一个最大堆,然后不断移除堆顶元素(最大值),将其放置在数组的末尾,同时调整剩余元素以保持最大堆的性质,直到数组完全排序。
6. 问题:什么是哈希表?它有什么优点?答案:哈希表是一种通过哈希函数将键映射到表中一个位置来访问记录的数据结构。
它的优点包括高效的查找、插入和删除操作,平均时间复杂度为O(1),这使得哈希表在需要快速访问数据的场景中非常有用。
7. 问题:解释什么是递归算法,并给出一个递归函数的例子。
答案:递归算法是一种自我引用的算法,它通过重复调用自身来解决问题。
一个典型的递归函数例子是计算阶乘的函数,它定义为n! = n * (n-1)!,其中n!是n的阶乘。
算法设计与分析试卷试题(A)(附答案)
chengcheng算法分析考试试卷(A卷)课程名称算法分析编号题号一二三四总分得分评阅人一、填空题(每小题3分,共30分)1、一个算法的优劣可以用空间复杂度与时间复杂度来衡量。
2、这种不断回头寻找目标的方法称为回溯法。
3、直接或间接地调用自身的算法称为递归算法。
4、 记号在算法复杂性的表示法中表示紧致界。
5、由分治法产生的子问题往往是原问题较小模式,这就为使用递归技术提供了方便。
6、建立计算模型的目的是为了使问题的计算复杂性分析有一个共同的客观尺度。
7、下列各步骤的先后顺序是②③④①。
①调试程序②分析问题③设计算法④编写程序。
8、最优子结构性质的含义是问题最优解包含其子问题最优解。
9、贪心算法从初始阶段开始,每一个阶段总是作一个使局部最优的贪心选择。
10、拉斯维加斯算法找到的解一定是正确的。
二、选择题(每小题2分,共20分)1、哈夫曼编码可利用( C )算法实现。
A、分治策略B、动态规划法C、贪心法D、回溯法2、下列不是基本计算模型的是( B )。
A、RAMB、ROMC、RASPD、TM3、下列算法中通常以自顶向下的方式求解最优解的是( C)。
A、分治法B、动态规划法C、贪心法D、回溯法chengcheng 4、在对问题的解空间树进行搜索的方法中,一个活结点有多次机会成为活结点的是( A )A、回溯法B、分支限界法C、回溯法和分支限界法D、动态规划5、秦始皇吞并六国使用的远交近攻,逐个击破的连横策略采用了以下哪种算法思想? BA、递归;B、分治;C、迭代;D、模拟。
6、FIFO是( A )的一搜索方式。
A、分支界限法B、动态规划法C、贪心法D、回溯法7、投点法是( B )的一种。
A、分支界限算法B、概率算法C、贪心算法D、回溯算法8、若线性规划问题存在最优解,它一定不在( C )A.可行域的某个顶点上 B.可行域的某条边上 C.可行域内部 D.以上都不对9、在一般输入数据的程序里,输入多多少少会影响到算法的计算复杂度,为了消除这种影响可用( B )对输入进行预处理。
计算机算法试题(含答案)
算法设计与分析试卷一、填空题(20分,每空2分)1、算法的性质包括输入、输出、___、有限性。
2、动态规划算法的基本思想就将待求问题_____、先求解子问题,然后从这些子问题的解得到原问题的解。
3、设计动态规划算法的4个步骤:(1)找出____,并刻画其结构特征。
(2)_______。
(3)_______。
(4)根据计算最优值得到的信息,_______。
4、流水作业调度问题的johnson算法:(1)令N1=___,N2={i|ai>=bj};(2)将N1中作业依ai的___。
5、对于流水作业高度问题,必存在一个最优调度π,使得作业π(i)和π(i+1)满足Johnson不等式_____。
6、最优二叉搜索树即是___的二叉搜索树。
二、综合题(50分)1、当(a1,a2,a3,a4,a5,a6)=(-2,11,-4,13,-5,-2)时,最大子段和为∑ak(2<=k<=4)____(5分)2、由流水作业调度问题的最优子结构性质可知,T(N,0)=______(5分)3、最大子段和问题的简单算法(10分)int maxsum(int n,int *a,int & bestj){intsum=0;for (int i=1;i<=n;i++)for (int j=i;j<=n;j++)int thissum=0;for(int k=i;k<=j;k++)_____;if(thissum>sum){sum=thissum;______;bestj=j;}}return sum;}4、设计最优二叉搜索树问题的动态规划算法OptimalBinarysearchTree? (15分)Void OptimalBinarysearchTree(int a,int n,int * * m, int * * w) {for(int i=0;i<=n;i++) {w[i+1][i]=a[i]; m[i+1][i]=____;} for(int r=0;r<n;r++)for(int i=1;i<=n-r;i++){int j=i+r;w[i][j]=w[i][j-1]+a[j]+b[j];m[i][j]=______;s[i][j]=i;for(int k=i+1;k<=j;k++){int t=m[i][k-1]+m[k+1][j];if(_____) {m[i][j]=t; s[i][j]=k;}}m[i][j]=t; s[i][j]=k;}}5、设n=4, (a1,a2,a3,a4)=(3,4,8,10), (b1,b2,b3,b4)=(6,2,9,15) 用两种方法求4个作业的最优调度方案并计算其最优值?(15分)三、简答题(30分)1、将所给定序列a[1:n]分为长度相等的两段a[1:n/2]和a[n/2+1:n],分别求出这两段的最大子段和,则a[1:n]的最大子段和有哪三种情形?(10分)答:2、由0——1背包问题的最优子结构性质,可以对m(i,j)建立怎样的递归式? (10分)3、0——1背包求最优值的步骤分为哪几步?(10分)参考答案:填空题:确定性分解成若干个子问题最优解的性质递归地定义最优值以自底向上的方式计算出最优值构造最优解{i|ai<bi} ai的非减序排序;将N2中作业依bi的非增序排序min{bπ(i),aπ(i+1)}≥min{bπ(i+1),aπ(i)}最小平均查找长度综合题:20 min{ai+T(N-{i},bi)}(1=<i<=n) thissum+=a[k] besti=i 0 m[i+1][j] t<m[i][j]法一:min(ai,bj)<=min(aj,bi)因为min(a1,b2)<=min(a2,b1)所以1→2 (先1后2)由min(a1,b3)<=min(a3,b1)得1→3 (先1后3)同理可得:最后为1→3→4→2法二:johnson算法思想N1={1,3,4} N2={2}N¹1={1,3,4} N¹2={2}所以 N¹1→N¹2得:1→3→4→2简答题:1 、(1)a[1:n]的最大子段和与a[1:n/2]的最大子段和相同。
计算机计算方法试题及答案
计算机计算方法试题及答案一、选择题1. 在计算机中,以下哪项不属于主存储器?[A] 内部存储器[B] 外部存储器[C] 高速缓存[D] 寄存器答案:[B] 外部存储器2. 下列哪种算法是用于求一个图中最短路径的?[A] 广度优先搜索[B] 深度优先搜索[C] Dijkstra算法[D] 快速排序算法答案:[C] Dijkstra算法3. 下列哪项不属于计算机网络的重要协议?[A] HTTP[B] DNS[C] TCP/IP[D] USB答案:[D] USB4. 在递归程序中,以下哪个选项描述了递归的基本特征?[A] 函数内部调用自身[B] 函数调用另一个函数[C] 函数返回一个值[D] 函数接受用户输入答案:[A] 函数内部调用自身5. 下列哪个选项是计算机中常用的二进制表示法?[A] 补码[B] 原码[C] 反码[D] 科学计数法答案:[A] 补码二、填空题1. 在二分查找算法中,若有序数组的长度为n,则最多需要进行______ 次比较来找到目标元素。
答案:log2(n)2. 当计算机进行浮点数运算时,可能会出现 ________ 误差。
答案:舍入误差3. 通过使用 _______,可以减少计算机程序运行时的空闲时间,提高运行效率。
答案:并行计算4. 在深度优先搜索算法中,使用 ______ 数据结构来记录已访问的节点。
答案:栈5. 在计算机领域,英特尔是一家知名的 ________ 公司。
答案:芯片制造三、简答题1. 请简要解释计算机网络中的TCP/IP协议是如何工作的。
答:TCP/IP协议是计算机网络中常用的通信协议之一,它包括两个部分:传输控制协议(TCP)和互联网协议(IP)。
TCP负责数据的可靠传输,通过数据分割、封装、重传等机制,保证数据的完整性和可靠性。
IP负责数据的路由和寻址,将数据从源主机传输到目标主机。
2. 请简要介绍一下迭代法和递归法在计算机计算方法中的应用。
答:迭代法和递归法都是常用的数值计算方法。
算法分析与设计试题答案
算法分析与设计习题第一章算法引论一、填空题:1、算法运行所需要的计算机资源的量,称为算法复杂性,主要包括时间复杂度和空间复杂度。
2、多项式10()m m A n a n a n a =+++的上界为O(n m )。
3、算法的基本特征:输入、输出、确定性、有限性。
4、如何从两个方面评价一个算法的优劣:时间复杂度、空间复杂度。
5、计算下面算法的时间复杂度记为: O(n 3) 。
for(i=1;i<=n;i++)for(j=1;j<=n;j++){c[i][j]=0;for(k=1;k<=n;k++)c[i][j]= c[i][j]+a[i][k]*b[k][j];}6、描述算法常用的方法:自然语言、伪代码、程序设计语言、流程图、盒图、PAD 图。
7、算法设计的基本要求:正确性 和 可读性。
8、计算下面算法的时间复杂度记为: O(n 2) 。
for (i =1;i<n; i++){ y=y+1;for (j =0;j <=2n ;j++ )x ++;}9、计算机求解问题的步骤:问题分析、数学模型建立、算法设计与选择、算法表示、算法分析、算法实现、程序调试、结果整理文档编制。
10、算法是指解决问题的 方法或过程 。
二、简答题:1、按照时间复杂度从低到高排列:O( 4n 2)、O( logn)、O( 3n )、O( 20n)、O( 2)、O( n 2/3),O( n!)应该排在哪一位?答:O( 2),O( logn),O( n 2/3),O( 20n),O( 4n 2),O( 3n ),O( n!)2、什么是算法?算法的特征有哪些?答:1)算法:指在解决问题时,按照某种机械步骤一定可以得到问题结果的处理过程。
通俗讲,算法:就是解决问题的方法或过程。
2)特征:1)算法有零个或多个输入;2)算法有一个或多个输出; 3)确定性 ; 4)有穷性3、给出算法的定义?何谓算法的复杂性?计算下例在最坏情况下的时间复杂性?for(j=1;j<=n;j++) (1)for(i=1;i<=n;i++) (2) {c[i][j]=0; (3)for(k=1;k<=n;k++) (4)c[i][j]= c[i][j]+a[i][k]*b[k][j]; } (5)答:1)定义:指在解决问题时,按照某种机械步骤一定可以得到问题结果的处理过程。
《算法与程序设计》试题带答案
高一第二学期《算法与程序设计》学分认定试题学校:_____________ 班级:____________ 学号:____________ 姓名:____________一、单选题(每小题3分,20小题,共60分)1、用计算机解决问题时,首先应该确定程序“做什么?”,然后再确定程序“如何做?”请问“如何做?”是属于用计算机解决问题的哪一个步骤?()A、分析问题B、设计算法C、编写程序D、调试程序2、在调试程序过程中,下列哪一种错误是计算机检查不出来的?()A、编译错误B、执行错误C、逻辑错误D、任何错误计算机都能检查出来3、下列关于算法的叙述中,错误的是()A、一个算法至少有一个输入和一个输出B、算法的每一个步骤必须确切地定义C、一个算法在执行有穷步之后必须结束D、算法中有待执行的运算和操作必须是相当基本的。
4、流程图中表示判断的是()。
A、矩形框B、菱形框C、圆形框D、椭圆形框5、任何复杂的算法都可以用三种基本结构组成,下列不属于基本结构的是()A、顺序结构B、选择结构C、层次结构D、循环结构6、能够被计算机直接识别的语言是()A、伪代码B、高级语言C、机器语言D、汇编语言7、在VB语言中,下列数据中合法的长整型常量是()A、08AB、2380836EC、88.12345D、1.2345E68、求Mid(“ABCDEFG”,3,2)的结果是()A、“ABC”B、“CD”C、“ABCDEF”D、“BCD”9、表达式 A+B+C<D AND A>=3 OR NOT C<0 OR D>0当A=3,B=4,C=-5,D=6时的运算结果是()A、0B、1C、TRUED、FALSE10、在循环语句 For x=1 to 100 step 2……Next x 中,x能达到的最大值是()A、100B、99C、98D、9711、在下列选项中,不属于VB的对象的是()A、窗体的背景颜色B、命令按钮C、文本框D、标签12、在调试程序的时候,经常要设置断点,设置断点的快捷键是()A、F1B、F8C、F9D、F1213、算法描述可以有多种表达方法,下面哪些方法不可以描述“闰年问题”的算法()A、自然语言B、流程图C、伪代码D、机器语言14、以下不属于非法用户自定义标识符(常量和变量命名)的是()A、8adB、ad8C、_a8dD、const15、已知A,B,C,D是整型变量,且都已有互不相同的值,执行语句B=0;A=C;D=A;D=B;后,其值相等的变量是()A、A,DB、A,CC、C,BD、B,A16、要交换变量A和B的值,应使用的语句组是( )A、A=B;B=C;C=AB、C=A;A=B;B=CC、A=B;B=AD、C=A;B=A;B=C17、Visual Basic中以单引号开头一行文字称为注释,它对程序的运行()A、起一定作用B、有时候起作用C、不起任何作用,但是必须的D、不起任何作用,但能增加程序的可阅读性18、要使一个命令按钮显示文字“确定”,正确的设置是把该命令按钮的()。
计算机算法测试题及答案
计算机算法测试题及答案一、选择题(每题2分,共20分)1. 以下哪种排序算法的时间复杂度是O(nlogn)?A. 冒泡排序B. 选择排序C. 快速排序D. 插入排序答案:C2. 在计算机科学中,递归算法的基本思想是什么?A. 重复执行相同的操作B. 将问题分解为更小的子问题C. 循环调用自身D. 随机选择算法答案:B3. 以下哪个数据结构不是线性数据结构?A. 数组B. 链表C. 树D. 图答案:D4. 在数据库管理系统中,用于表示数据表之间关系的是:A. 索引B. 视图C. 键D. 触发器答案:C5. 以下哪种算法是解决图的最短路径问题的?A. 深度优先搜索B. 广度优先搜索C. 迪杰斯特拉算法D. 快速排序答案:C二、填空题(每题3分,共30分)1. 在计算机算法中,______算法是一种通过不断交换相邻元素来达到排序目的的算法。
答案:冒泡排序2. 一个算法的时间复杂度为O(n^2),这意味着算法的执行时间随着输入规模的增加而______。
答案:平方增长3. 在面向对象编程中,______是对象之间共享的属性和方法的集合。
答案:类4. 在关系型数据库中,______用于唯一标识表中的每一条记录。
答案:主键5. 在图的遍历算法中,______算法可以用于找到从起始顶点到图中所有其他顶点的最短路径。
答案:迪杰斯特拉三、简答题(每题10分,共50分)1. 请简述什么是贪心算法,并给出一个贪心算法的应用实例。
答案:贪心算法是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是全局最好或最优的算法。
贪心算法在每一步选择时都采取在当前状态下最好或最优的选择,而不考虑子问题的解,不能保证会得到最优解。
一个典型的贪心算法应用实例是霍夫曼编码,它通过选择最短的编码来压缩数据,从而实现数据的有效压缩。
2. 描述一下什么是动态规划算法,并给出一个动态规划算法的实例。
答案:动态规划是一种通过将复杂问题分解为更简单的子问题来解决的方法,它通过存储这些子问题的解来避免重复计算,从而提高算法的效率。
算法考试试题及答案
一、填空题(本题10分,每空1分)1、算法的复杂性是的度量,是评价算法优劣的重要依据。
2、设n为正整数,利用大“O(·)"记号,将下列程序段的执行时间表示为n的函数,则下面程序段的时间复杂度为。
i=1; k=0;while(i<n) { k=k+10*i;i++; }3、计算机的资源最重要的是和资源.因而,算法的复杂性有和之分。
4、f(n)= 6×2n+n2,f(n)的渐进性态f(n)=O( )5、递归是指函数或者通过一些语句调用自身。
6、分治法的基本思想是将一个规模为n的问题分解为k个规模较小的子问题,这些子问题互相且与原问题相同.二、选择题(本题20分,每小题2分)1、分支限界法与回溯法都是在问题的解空间树T上搜索问题的解,二者( )。
A。
求解目标不同,搜索方式相同 B。
求解目标不同,搜索方式也不同C。
求解目标相同,搜索方式不同D。
求解目标相同,搜索方式也相同2、回溯法在解空间树T上的搜索方式是()。
A。
深度优先 B。
广度优先 C。
最小耗费优先D.活结点优先3、在对问题的解空间树进行搜索的方法中,一个活结点最多有一次机会成为活结点的是( )。
A.回溯法 B。
分支限界法 C.回溯法和分支限界法D。
回溯法求解子集树问题4、以下关于判定问题难易处理的叙述中正确的是( ).A。
可以由多项式时间算法求解的问题是难处理的B.需要超过多项式时间算法求解的问题是易处理的C.可以由多项式时间算法求解的问题是易处理的D.需要超过多项式时间算法求解的问题是不能处理的5、设f(N),g(N)是定义在正数集上的正函数,如果存在正的常数C和自然数N0,使得当N≥N0时有f(N)≤Cg(N),则称函数f(N)当N充分大时有上界g(N),记作f(N)=O(g(N)),即f(N)的阶( )g(N)的阶。
A。
不高于 B.不低于 C.等价于 D.逼近6、对于含有n个元素的子集树问题,最坏情况下其解空间的叶结点数目为( )。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
算法设计与分析试卷一、填空题(20分,每空2分)1、算法的性质包括输入、输出、___、有限性。
2、动态规划算法的基本思想就将待求问题_____、先求解子问题,然后从这些子问题的解得到原问题的解。
3、设计动态规划算法的4个步骤:(1)找出____,并刻画其结构特征。
(2)_______。
(3)_______。
(4)根据计算最优值得到的信息,_______。
4、流水作业调度问题的johnson算法:(1)令N1=___,N2={i|ai>=bj};(2)将N1中作业依ai的___。
5、对于流水作业高度问题,必存在一个最优调度π,使得作业π(i)和π(i+1)满足Johnson不等式_____。
6、最优二叉搜索树即是___的二叉搜索树。
二、综合题(50分)1、当(a1,a2,a3,a4,a5,a6)=(-2,11,-4,13,-5,-2)时,最大子段和为∑ak(2<=k<=4)____(5分)2、由流水作业调度问题的最优子结构性质可知,T(N,0)=______(5分)3、最大子段和问题的简单算法(10分)int maxsum(int n,int *a,int & bestj){intsum=0;for (int i=1;i<=n;i++)for (int j=i;j<=n;j++)int thissum=0;for(int k=i;k<=j;k++)_____;if(thissum>sum){sum=thissum;______;bestj=j;}}return sum;}4、设计最优二叉搜索树问题的动态规划算法OptimalBinarysearchTree? (15分)Void OptimalBinarysearchTree(int a,int n,int * * m, int * * w){for(int i=0;i<=n;i++) {w[i+1][i]=a[i]; m[i+1][i]=____;}for(int r=0;r<n;r++)for(int i=1;i<=n-r;i++){int j=i+r;w[i][j]=w[i][j-1]+a[j]+b[j];m[i][j]=______;s[i][j]=i;for(int k=i+1;k<=j;k++){int t=m[i][k-1]+m[k+1][j];if(_____) {m[i][j]=t; s[i][j]=k;}}m[i][j]=t; s[i][j]=k;}}5、设n=4, (a1,a2,a3,a4)=(3,4,8,10), (b1,b2,b3,b4)=(6,2,9,15) 用两种方法求4个作业的最优调度方案并计算其最优值?(15分)三、简答题(30分)1、将所给定序列a[1:n]分为长度相等的两段a[1:n/2]和a[n/2+1:n],分别求出这两段的最大子段和,则a[1:n]的最大子段和有哪三种情形?(10分)答:2、由0——1背包问题的最优子结构性质,可以对m(i,j)建立怎样的递归式? (10分)3、0——1背包求最优值的步骤分为哪几步?(10分)参考答案:填空题:确定性分解成若干个子问题最优解的性质递归地定义最优值以自底向上的方式计算出最优值构造最优解{i|ai<bi} ai的非减序排序;将N2中作业依bi的非增序排序min{bπ(i),aπ(i+1)}≥min{bπ(i+1),aπ(i)}最小平均查找长度综合题:20 min{ai+T(N-{i},bi)}(1=<i<=n) thissum+=a[k] besti=i 0 m[i+1][j] t<m[i][j]法一:min(ai,bj)<=min(aj,bi)因为min(a1,b2)<=min(a2,b1)所以1→2 (先1后2)由min(a1,b3)<=min(a3,b1)得1→3 (先1后3)同理可得:最后为1→3→4→2法二:johnson算法思想N1={1,3,4} N2={2}N¹1={1,3,4} N¹2={2}所以 N¹1→N¹2得:1→3→4→2简答题:1 、(1)a[1:n]的最大子段和与a[1:n/2]的最大子段和相同。
(2)a[1:n]的最大子段和与的最大子段a[n/2+1:n]和相同。
(3)a[1:n]的最大子段和为∑ak(i=<k<=J),且1<=i<=n/2,n/2+1<=J<=n。
2、(1)m(i,j)=max{m(i+1,j),m(i+1,j-wi)+ui} (j>=wi)或则m(i,j)= m(i+1,j) (0<=j<wi) (2)m(n,j)=un j>=wn 或则m(n,j)=0 0<=j<wn3、(1)、p[n+1]={(0,0)}(2)、由p[i+1]→q[i+1], q[i+1]=p[i+1]⊕(wi,vi)(3)、Mij=p[i+1]∪q[i+1]Pi=Mij——其中的受控点=p[i+1]∪q[i+1]——其中的受控(4)、重复(2)-(3)直到求出P[1]1.在一个算法中调用另一个算法时,系统需在运行被调用算法之前完成哪些工作?同时从被调用算法返回调用算法需完成哪些工作?答:在一个算法中调用另一算法时,系统需在运行被调用算法之前先完成三件事:(1)将所有实参指针、返回地址等信息传递给被调用算法;(2)为被调用算法的局部变量分配存储区;(3)将控制转移到被调用算法的入口。
在从被调用算法返回调用算法时需完成三件事:(1)保存被调用算法的计算结果;(2)释放分配给被调用算法的数据区;(3)依照被调用算法保存的返回地址将控制转移到调用算法。
2.动态规划算法求解问题的步骤?答:动态规划法适用于解最优化问题。
通常可以按以下4个步骤设计:(1)找出最优解的性质,并刻画其结构特征;(2)递归地定义最优值;(3)以自底向上的方式计算最优值;(4)根据计算最优值时得到的信息构造最优解。
3.线性规划法中单纯形算法的基本步骤?答:步骤一选入基变量。
步骤二选离基变量。
步骤三做转轴变换。
步骤四转步骤一。
4.分治法的基本思想和原理是什么?答:分治法的基本思想是将一个规模为n的问题分解为k个规模较小的子问题,这些子问题互相独立且与原问题相同。
递归地解这些子问题,然后将各子问题的解合并得到原问题的解。
5.利用回溯法解决问题包含哪些步骤?答:利用回溯法解题常包含以下3步骤:(1)针对所给问题,定义问题的解空间;(2)确定易于搜索的解空间结构;(3)以深度优先方式搜索解空间,并在搜索过程中用剪枝函数避免无效搜索。
五分析题(36分)1.求下列函数的渐进表达式:3n2+10n; n2/10+2n; 21+1/n; logn3; 10log3n分析与解答:3n2+10n=O(n2);n2/10+2n=O(2n);21+1/n=O(1);logn3=O(logn);10log3n=O(n)2.讨论O(1)和O(2)的区别。
分析与解答:根据符号O 的定义易知O(1)=O(2)。
用O(1)或O(2)表示同一个函数时,差别仅在于其中的常数因子。
3.按渐近阶排列表达式按照渐近阶从低到高的顺序排列以下表达式:4n 2,logn ,3n ,20n ,2,n 2/3。
又n!应该排在哪一位?分析与解答:按渐近阶从低到高,函数排列顺序如下:2,logn ,n 2/3,20n ,4n 2,3n ,n !。
4.算法效率(1)假设某算法在输入规模为n 时计算时间为T(n)=3*2n 。
在某台计算机上实现并完成该算法的时间为t 秒。
现有另一台计算机,其运行速度为第一台的64倍,那么在这台新机器上用同一算法在t 秒内能解输入规模为多大的问题?(2)若上述算法的计算时间改进为T(n)=n 2,其余条件不变,则在新机器上用t 秒时间能解输入规模为多大的问题?(3)若上述算法的计算时间进一步改进为T(n)=8,其余条件不变,那么在新机器上用t 秒时间能解输入规模为多大的问题?分析解答:(1)设新机器用同一算法在t 秒内能解输入规模为n1的问题。
因此有:t=3*22=3*2n1/64,解得你n1=n+6。
(2)n12=64n 2n1=8n 。
(3)由于T(n)=常数,因此算法可解任意规模的问题。
5.阶乘函数阶乘函数可递归地定义为:int factorial(int n){if(n==0) return 1;return n* factorial(n-1);}0)!1(1!>=⎩⎨⎧-=n n n n n6.Fibonacci 数列无穷数列1,1,2,3,5,8,13,21,34,55,……,称为Fibonacci 数列。
它可以递归地定义为:请对这个无穷数列设计一个算法,并进行描述(自然语言描述和VC++描述).第n 个Fibonacci 数可递归地计算如下:int fibonacci (int n){if (n <= 1) return 1;returnfibonacci (n-1)+fibonacci (n-2);}7.循环赛日程表设有n=2k 个运动员要进行兵乓球循环赛。
现在要设计一个满足以下要求的比赛日程表:(1)每个选手必须与其他n-1个选手各赛一次;(2)每个选手一天只能赛一次;(3)循环赛一共进行n-1天。
请设计一个算法解决以上问题,并进行描述(自然语言和C++语言)按分治策略,将所有的选手分为两半,n 个选手的比赛日程表就可以通过为n/2个选手设计的比赛日程表来决定。
递归地用对选手进行分割,直到只剩下2个选手时,比赛日程表的制定就变得很简单。
这时只要让这2个选手进行比赛就可以了。
8.有一批集装箱要装上一艘载重量为c 的轮船。
其中集装箱i 的重量为Wi 。
最优装载问题要求确定在装载体积不受限制的情况下,将尽可能多的集装箱装上轮船。
分析回答以下两个问题:(1)分析以上最优装载问题具有贪心选择性质(2)用C++程序进行正确的算法描述分析与解答:(1) 设集装箱已依其重量从小到大排序,(x1,x2,…,x n )是最有装载问题的一个最优解。
又设k=min{i|x i =1}。
易知,如果给定的最有装载问题有解,则1≤k ≤n 。
② 当k=1时,(x1,x2,…,x n )是满足贪心选择性质的最优解。
②当k>1时,取y 1=1;y k =0;y i =x i ,1<i ≤n,i ≠k,则因此,()是所给最有装载问题的可行解。
110)2()1(11)(>==⎪⎩⎪⎨⎧-+-=n n n n F n F n F另一方面,由知,()是满足贪心选择性质的最优解。