湖南大学复习算法分析期末答案大题
【期末复习】数据结构期末综合练习及参考答案四(算法分析题)

【期末复习】数据结构期末综合练习及参考答案四(算法分析题)数据结构(本科)期末综合练习四(算法分析题)1. 指出算法的功能并求出其时间复杂度。
int fun(int n){int i =1,s=1;while(s< bdsfid="67" p=""><>return i;}功能为:时间复杂度为:2. 指出算法的功能并求出其时间复杂度。
void matrimult(int a[M][N], int b[N][L], int c[M][L]){ //M、N、L均为全局整型常量int i, j, k;for ( i = 0; i < M; i++ )for ( j = 0; j < L; j++ )c[i][j] = 0;for( i =0; i <m;i++)< bdsfid="79" p=""></m;i++)<>for(j=0;j<l;j++)< bdsfid="81" p=""></l;j++)<>for(k=0;k<n;k++)< bdsfid="83" p=""></n;k++)<>c[i][j]+=a[i][k]*b[k][j];}功能为:时间复杂性为:3. 针对如下算法,回答问题:若数组A[n] = {12, 24, 0, 38, 0, 0, 0, 0, 29, 0, 45, 0}, n = 12,给出算法执行后数组A[n]的状态。
templatevoid unknown ( T A[ ], int n ) {int free = 0;for ( int i = 0; i < n; i++ )if ( A[i] != 0 ) {if ( i != free ) {A[free] = A[i];A[i] = 0;}free++;}}算法执行的结果4. 设顺序表SeqList具有下列操作:int Length( ) const; //计算表长度并返回,若表为空则返回0T Remove( ); //删除当前表项并返回其值,置下一表项为当前表项T First( ); //取表中第一个表项的值并返回,并置为当前表项T Next( ); //取当前表项后继表项的值并返回,//并把此后继表项置为当前表项若顺序表中存放的数据为{29,38,47,16,95,64,73,83,51,10,0,26},表的长度为12,参数值s=10, t=30,说明算法执行后顺序表的状态和长度的变化。
2022年湖南大学计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案)

2022年湖南大学计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案)一、选择题1、已知广义表LS=((a,b,c),(d,e,f)),用head和tail数取出LS中原子e 的运算是()。
A.head(tail(LS))B.tail(head(LS))C.head(tail(head(tail(LS))))D.head(tail(tail(head(LS))))2、下述文件中适合于磁带存储的是()。
A.顺序文件B.索引文件C.哈希文件D.多关键字文件3、连续存储设计时,存储单元的地址()。
A.一定连续B.一定不连续C.不一定连续D.部分连续,部分不连续4、已知有向图G=(V,E),其中V={V1,V2,V3,V4,V5,V6,V7}, E={<V1,V2>,<V1,V3>,<V1,V4>,<V2,V5>,<V3,V5>, <V3,V6>,<V4,V6>,<V5,V7>,<V6,V7>},G的拓扑序列是()。
A.V1,V3,V4,V6,V2,V5,V7B.V1,V3,V2,V6,V4,V5,V7C.V1,V3,V5,V2,V6,V7D.V1,V2,V5,V3,V4,V6,V75、下列关于AOE网的叙述中,不正确的是()。
A.关键活动不按期完成就会影响整个工程的完成时间B.任何一个关键活动提前完成,那么整个工程将会提前完成C.所有的关键活动提前完成,那么整个工程将会提前完成D.某些关键活动若提前完成,那么整个工程将会提前完成6、已知字符串S为“abaabaabacacaabaabcc”,模式串t为“abaabc”,采用KMP算法进行匹配,第一次出现“失配”(s!=t)时,i=j=5,则下次开始匹配时,i和j的值分别()。
A.i=1,j=0 B.i=5,j=0 C.i=5,j=2 D.i=6,j=27、下列选项中,不能构成折半查找中关键字比较序列的是()。
《算法分析与设计》期末考试复习题纲(完整版)

《算法分析与设计》期末复习题一、选择题1.算法必须具备输入、输出和( D )等4个特性。
A.可行性和安全性 B.确定性和易读性C.有穷性和安全性 D.有穷性和确定性2.算法分析中,记号O表示( B ),记号Ω表示( A )A.渐进下界B.渐进上界C.非紧上界D.紧渐进界3.假设某算法在输入规模为n时的计算时间为T(n)=3*2^n。
在某台计算机上实现并完成概算法的时间为t秒。
现有另一台计算机,其运行速度为第一台的64倍,那么在这台新机器上用同一算法在t秒内能解输入规模为多大的问题?( B )解题方法:3*2^n*64=3*2^xA.n+8 B.n+6C.n+7 D.n+54.设问题规模为N时,某递归算法的时间复杂度记为T(N),已知T(1)=1,T(N)=2T(N/2)+N/2,用O表示的时间复杂度为( C )。
A.O(logN) B.O(N)C.O(NlogN) D.O(N²logN)5.直接或间接调用自身的算法称为( B )。
A.贪心算法 B.递归算法C.迭代算法 D.回溯法6.Fibonacci数列中,第4个和第11个数分别是( D )。
A.5,89 B.3,89C.5,144 D.3,1447.在有8个顶点的凸多边形的三角剖分中,恰有( B )。
A.6条弦和7个三角形 B.5条弦和6个三角形C.6条弦和6个三角形 D.5条弦和5个三角形8.一个问题可用动态规划算法或贪心算法求解的关键特征是问题的( B )。
A.重叠子问题 B.最优子结构性质C.贪心选择性质 D.定义最优解9.下列哪个问题不用贪心法求解( C )。
A.哈夫曼编码问题 B.单源最短路径问题C.最大团问题 D.最小生成树问题10.下列算法中通常以自底向上的方式求解最优解的是( B )。
A.备忘录法 B.动态规划法C.贪心法 D.回溯法11.下列算法中不能解决0/1背包问题的是( A )。
A.贪心法 B.动态规划C.回溯法 D.分支限界法12.下列哪个问题可以用贪心算法求解( D )。
算法设计与分析历年期末试题整理_含答案_

《算法设计与分析》历年期末试题整理(含答案)(1)用计算机求解问题的步骤:1、问题分析2、数学模型建立3、算法设计与选择4、算法指标5、算法分析6、算法实现 7、程序调试 8、结果整理文档编制(2)算法定义:算法是指在解决问题时,按照某种机械步骤一定可以得到问题结果的处理过程(3)算法的三要素1、操作2、控制结构3、数据结构算法具有以下5 个属性:有穷性:一个算法必须总是在执行有穷步之后结束,且每一步都在有穷时间内完成。
确定性:算法中每一条指令必须有确切的含义。
不存在二义性。
只有一个入口和一个出口可行性:一个算法是可行的就是算法描述的操作是可以通过已经实现的基本运算执行有限次来实现的。
输入:一个算法有零个或多个输入,这些输入取自于某个特定对象的集合。
输出:一个算法有一个或多个输出,这些输出同输入有着某些特定关系的量。
算法设计的质量指标:正确性:算法应满足具体问题的需求;可读性:算法应该好读,以有利于读者对程序的理解;健壮性:算法应具有容错处理,当输入为非法数据时,算法应对其作出反应,而不是产生莫名其妙的输出结果。
效率与存储量需求:效率指的是算法执行的时间;存储量需求指算法执行过程中所需要的最大存储空间。
一般这两者与问题的规模有关。
经常采用的算法主要有迭代法、分而治之法、贪婪法、动态规划法、回溯法、分支限界法迭代法也称“辗转法”,是一种不断用变量的旧值递推出新值的解决问题的方法。
利用迭代算法解决问题,需要做好以下三个方面的工作:一、确定迭代模型。
在可以用迭代算法解决的问题中,至少存在一个直接或间接地不断由旧值递推出新值的变量,这个变量就是迭代变量。
二、建立迭代关系式。
所谓迭代关系式,指如何从变量的前一个值推出其下一个值的公式(或关系)。
迭代关系式的建立是解决迭代问题的关键,通常可以使用递推或倒推的方法来完成。
三、对迭代过程进行控制。
在什么时候结束迭代过程?这是编写迭代程序必须考虑的问题。
不能让迭代过程无休止地重复执行下去。
算法分析复习题目及答案16-12-10

算法分析复习题目及答案16-12-10一。
选择题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()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 )。
算法期末考试题及答案

算法期末考试题及答案一、选择题(每题2分,共20分)1. 以下哪个算法不是排序算法?A. 快速排序B. 归并排序C. 深度优先搜索D. 堆排序答案:C2. 在二叉树的遍历算法中,中序遍历的顺序是:A. 先序B. 后序C. 中序D. 层序答案:C3. 动态规划与分治法算法的主要区别在于:A. 问题分解的方式B. 问题解决的顺序C. 存储中间结果的方式D. 问题规模的大小答案:C4. 哈希表的冲突解决方法不包括:A. 开放寻址法B. 链地址法C. 线性探测法D. 排序答案:D5. 以下哪个是图的遍历算法?A. 归并排序B. 深度优先搜索C. 快速排序D. 堆排序答案:B6. 贪心算法的特点是:A. 每一步都选择最优解B. 每一步都选择局部最优解C. 每一步都选择最差解D. 每一步都随机选择解答案:B7. 在算法分析中,时间复杂度O(1)表示:A. 常数时间B. 线性时间C. 对数时间D. 多项式时间答案:A8. 以下哪个是排序算法的时间复杂度为O(n^2)?A. 快速排序B. 归并排序C. 冒泡排序D. 堆排序答案:C9. 递归算法的基本原理是:A. 重复执行B. 分而治之C. 循环调用D. 迭代求解答案:B10. 以下哪个是算法的时间复杂度为O(log n)的典型例子?A. 二分查找B. 线性查找C. 冒泡排序D. 快速排序答案:A二、简答题(每题10分,共20分)1. 简述快速排序算法的基本思想及其时间复杂度。
答案:快速排序是一种分治法的排序算法。
其基本思想是选择一个元素作为“基准”(pivot),然后将数组分为两部分,一部分包含所有小于基准的元素,另一部分包含所有大于基准的元素。
这个过程称为分区(partitioning)。
之后,递归地对这两部分进行快速排序。
快速排序的平均时间复杂度为O(n log n),但在最坏情况下(例如数组已经排序或所有元素相等)时间复杂度为O(n^2)。
2. 解释什么是动态规划,并给出一个动态规划问题的例子。
算法分析期末试题集答案(6套)

《算法分析与设计》期末复习题(一)一、选择题1.应用Johnson法则的流水作业调度采用的算法是(D)A. 贪心算法B. 分支限界法C.分治法D. 动态规划算法2.Hanoi塔问题如下图所示。
现要求将塔座A上的的所有圆盘移到塔座B上,并仍按同样顺序叠置。
移动圆盘时遵守Hanoi塔问题的移动规则。
由此设计出解Hanoi塔问题的递归算法正确的为:(B)Hanoi塔3.动态规划算法的基本要素为(C)A. 最优子结构性质与贪心选择性质B.重叠子问题性质与贪心选择性质C.最优子结构性质与重叠子问题性质D. 预排序与递归调用4. 算法分析中,记号O表示(B),记号Ω表示(A),记号Θ表示(D)。
A.渐进下界B.渐进上界C.非紧上界D.紧渐进界E.非紧下界5. 以下关于渐进记号的性质是正确的有:(A)A.f(n)(g(n)),g(n)(h(n))f(n)(h(n))=Θ=Θ⇒=ΘB. f(n)O(g(n)),g(n)O(h(n))h(n)O(f(n))==⇒=C. O(f(n))+O(g(n)) = O(min{f(n),g(n)})D. f(n)O(g(n))g(n)O(f(n))=⇔=6. 能采用贪心算法求最优解的问题,一般具有的重要性质为:(A)A. 最优子结构性质与贪心选择性质B.重叠子问题性质与贪心选择性质C.最优子结构性质与重叠子问题性质D. 预排序与递归调用7. 回溯法在问题的解空间树中,按(D)策略,从根结点出发搜索解空间树。
A.广度优先 B. 活结点优先 C.扩展结点优先 D. 深度优先8. 分支限界法在问题的解空间树中,按(A)策略,从根结点出发搜索解空间树。
A.广度优先 B. 活结点优先 C.扩展结点优先 D. 深度优先9. 程序块(A)是回溯法中遍历排列树的算法框架程序。
A.B.C. D.10. 回溯法的效率不依赖于以下哪一个因素?(C )A. 产生x[k]的时间;B. 满足显约束的x[k]值的个数;C. 问题的解空间的形式;D. 计算上界函数bound 的时间;E. 满足约束函数和上界函数约束的所有x[k]的个数。
湖南大学复习算法分析期末答案大题

一、解答题1.机器调度问题。
问题描述:现在有n件任务和无限多台的机器,任务可以在机器上得到处理。
每件任务的开始时间为s i,完成时间为f i,s i<f i 。
[s i,f i]为处理任务i 的时间围。
两个任务i,j重叠指两个任务的时间围区间有重叠,而并非指i,j的起点或终点重合。
例如:区间[1,4]与区间[2,4]重叠,而与[4,7]不重叠。
一个可行的任务分配是指在分配中没有两件重叠的任务分配给同一台机器。
因此,在可行的分配中每台机器在任何时刻最多只处理一个任务。
最优分配是指使用的机器最少的可行分配方案。
问题实例:若任务占用的时间围是{[1,4],[2,5],[4,5],[2,6],[4,7]},则按时完成所有任务最少需要几台机器?(提示:使用贪心算法)画出工作在对应的机器上的分配情况。
3. 单源最短路径的求解。
问题的描述:给定带权有向图(如下图所示)G =(V,E),其中每条边的权是非负实数。
另外,还给定V中的一个顶点,称为源。
现在要计算从源到所有其它各顶点的最短路长度。
这里路的长度是指路上各边权之和。
这个问题通常称为单源最短路径问题。
解法:现采用Dijkstra算法计算从源顶点1到其它顶点间最短路径。
请将此过程填入下表中。
110030maxint10-{1}初始dist[5]dist[4]dist[3]dist[2]uS迭代7. 最长公共子序列问题:给定2个序列X={x1,x2,…,xm}和Y={y1,y2,…,yn},找出X和Y的最长公共子序列。
由最长公共子序列问题的最优子结构性质建立子问题最优值的递归关系。
用c[i][j]记录序列Xi和Yj的最长公共子序列的长度。
其中,Xi={x1,x2,…,xi};Yj={y1,y2,…,yj}。
当i=0或j=0时,空序列是Xi和Yj的最长公共子序列。
故此时C[i][j]=0。
其它情况下,由最优子结构性质可建立递归关系如下:00,0 [][][1][1]1,0;max{[][1],[1][]},0;i ji ji jc i j c i j i j x yc i j c i j i j x y⎧==⎪=--+>=⎨⎪-->≠⎩在程序中,b[i][j]记录C[i][j]的值是由哪一个子问题的解得到的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、 解答题1. 机器调度问题。
问题描述:现在有n 件任务和无限多台的机器,任务可以在机器上得到处理。
每件任务的开始时间为s i ,完成时间为f i ,s i <f i 。
[s i ,f i ]为处理任务i 的时间范围。
两个任务i ,j 重叠指两个任务的时间范围区间有重叠,而并非指i ,j 的起点或终点重合。
例如:区间[1,4]与区间[2,4]重叠,而与[4,7]不重叠。
一个可行的任务分配是指在分配中没有两件重叠的任务分配给同一台机器。
因此,在可行的分配中每台机器在任何时刻最多只处理一个任务。
最优分配是指使用的机器最少的可行分配方案。
问题实例:若任务占用的时间范围是{[1,4],[2,5],[4,5],[2,6],[4,7]},则按时完成所有任务最少需要几台机器?(提示:使用贪心算法)画出工作在对应的机器上的分配情况。
3. 单源最短路径的求解。
问题的描述:给定带权有向图(如下图所示)G =(V,E),其中每条边的权是非负实数。
另外,还给定V 中的一个顶点,称为源。
现在要计算从源到所有其它各顶点的最短路长度。
这里路的长度是指路上各边权之和。
这个问题通常称为单源最短路径问题。
解法:现采用Dijkstra 算法计算从源顶点1到其它顶点间最短路径。
请将此过程填入下表中。
43 2 1 100 30 maxint10 - {1} 初始 dist[5] dist[4] dist[3] dist[2] u S 迭代7. 最长公共子序列问题:给定2个序列X={x1,x2,…,xm}和Y={y1,y2,…,yn},找出X和Y的最长公共子序列。
由最长公共子序列问题的最优子结构性质建立子问题最优值的递归关系。
用c[i][j]记录序列Xi和Yj的最长公共子序列的长度。
其中,Xi={x1,x2,…,xi};Yj={y1,y2,…,yj}。
当i=0或j=0时,空序列是Xi和Yj的最长公共子序列。
故此时C[i][j]=0。
其它情况下,由最优子结构性质可建立递归关系如下:00,0 [][][1][1]1,0;max{[][1],[1][]},0;i ji ji jc i j c i j i j x yc i j c i j i j x y⎧==⎪=--+>=⎨⎪-->≠⎩在程序中,b[i][j]记录C[i][j]的值是由哪一个子问题的解得到的。
三、算法理解1、写出多段图最短路经动态规划算法求解下列实例的过程,并求出最优值。
各边的代价如下:C(1,2)=3, C(1,3)=5 ,C(1,4)=2C(2,6)=8 ,C(2,7)=4 ,C(3,5)=5 ,C(3,6)=4, C(4,5)=2,C(4,6)=1C(5,8)=4, C(6,8)=5 ,C(7,8)=6解:Cost(4,8)=0Cost(3,7)= C(7,8)+0=6 ,D[5]=8Cost(3,6)= C(6,8)+0=5, D[6]=8Cost(3,5)= C(5,8)+0=4 D[7]=8Cost(2,4)= min{C(4,6)+ Cost(3,6), C(4,5)+ Cost(3,5)}= min{1+ 5, 2+4}=6 D[4]=6Cost(2,3)= min{C(3,6)+ Cost(3,6) }= min{4+5}=9 D[3]=5Cost(2,2)= min{C(2,6)+ Cost(3,6), C(2,7)+ Cost(3,7)}= min{8+5, 4+6}=10 D[2]=7Cost(1,1)= min{C(1,2)+ Cost(2,2), C(1,3)+ Cost(2,3), C(1,4)+ Cost(2,4)}= min{3+10, 5+9,2+6}= 8D[1]=41→4→6→82、写出maxmin算法对下列实例中找最大数和最小数的过程。
数组 A=(48,12,61,3,5,19,32,7)解:写出maxmin算法对下列实例中找最大数和最小数的过程。
数组 A=()1、 48,12,61,3, 5,19,32,72、48,12 61,3 5,19 32,73、 48~61, 12~3 19~32,5~74、 61~32 3~55、 61 31、快速排序算法对下列实例排序,算法执行过程中,写出数组A第一次被分割的过程。
A=(65,70,75,80,85,55,50,2)解:第一个分割元素为65(1) (2) (3) (4) (5) (6) (7) (8) i p65 70 75 80 85 55 50 2 2 865 2 75 80 85 55 50 70 3 765 2 50 80 85 55 75 70 4 665 2 50 55 85 80 75 70 4 655 70 75 80 85 65 50 22、归并排序算法对下列实例排序,写出算法执行过程。
A=(48,12,61,3,5,19,32,7)解: 48,12,61,3 5,19,32,748,12 61,3 5,19 32,712,48 3,61 5,19 7,323, 12, 48, 61 5, 7, 19,323,5, 7,12,19,32,48,613、写出图着色问题的回溯算法的判断X[k]是否合理的过程。
解:i←0while i<k doif G[k,i]=1 and X[k]= X[i] thenreturn falsei←i+1repeatif i= k then return true4、对于下图,写出图着色算法得出一种着色方案的过程。
解:K←1X[1] ←1 , 返回 trueX[2]←1,返回false; X[2]←X[2]+1=2, 返回 trueX[3]←1 ,返回false; X[3]←X[3]+1=2, 返回false;X[3]←X[3]+1=3, 返回 true X[4]←1, 返回false; X[4]←X[4]+1=2, 返回false;X[4]←X[4]+1=3, 返回 true 找到一个解(1,2,3,3)5、写出第7题的状态空间树。
解:8、写出归并排序算法对下列实例排序的过程。
(6,2,9,3,5,1,8,7)解:调用第一层次 6,2,9,3 5,1,8,7 分成两个子问题调用第二层次 6,2 9,3 5,1 8,7 分成四个子问题调用第三层次 6 2 9 3 5 1 8 7 分成八个子问题调用第四层次只有一个元素返回上一层第三层归并 2 ,6 3, 9 1,5 7,8 返回上一层第二层归并 2 ,3,6, 9 1,5,7,8 返回上一层第一层归并 1, 2 ,3, 5 ,6, 7, 8,9 排序结束,返回主函数9、写出用背包问题贪心算法解决下列实例的过程。
P=(18,12,4,1)W=(12,10,8,3)M=25解:实例符合P(i)/W(i)≥P(i+1)/W(i+1)的顺序。
CU←25,X←0W[1]< CU: x[1]←1; CU←CU-W[1]=13;W[2]< CU: x[2]←1; CU←CU-W[2]=3;W[3]>CU: x[3]←CU/ W[3]=3/8;实例的解为:(1,1,3/8,0)11、有一个有序表为{1,3,9,12,32,41,45,62,75,77,82,95,100},当使用二分查找值为82的结点时,经过多少次比较后查找成功并给出过程。
解:有一个有序表为{1,3,9,12,32,41,45,62,75,77,82,95,100},当使用二分查找值为82的结点时,经过多少次比较后查找成功并给出过程。
一共要要执行四次才能找到值为82的数。
12、使用prim算法构造出如下图G的一棵最小生成树。
dist(1,2)=6;dist(2,5)=3;dist(5,6)=6;dist(6,4)=2;dist(4,1)=5;dist(1,3)=1;dist(2,3)=5;dist(3,4)=5;dist(3,6)=4;dist(5,3)=6解:使用普里姆算法构造出如下图G的一棵最小生成树。
dist(1,2)=6;dist(2,5)=3;dist(5,6)=6;dist(6,4)=2;dist(4,1)=5;dist(1,3)=1;dist(2,3)=5;dist(3,4)=5;dist(3,6)=4;dist(5,3)=613、有如下函数说明 int f(int x,int y) {f=x Mod y +1; }已知a=10,b=4,c=5 则执行k=f(f(a+c,b),f(b,c))后,k 的值是多少并写出详细过程。
解:有如下函数说明 int f(int x,int y) {f=x Mod y +1; }已知a=10,b=4,c=5 则执行k=f(f(a+c,b),f(b,c))后,k 的值是多少并写出详细过程。
}K 的值是5四、设计算法1. 设有n 项独立的作业{1,2,…, n},由m 台相同的机器加工处理。
作业i 所需要的处理时间为t i 。
约定:任何一项作业可在任何一台机器上处理,但未完工前不准中断处理;任何作业不能拆分更小的子作业。
多机调度问题要求给出一种调度方案,使所给的n 个作业在尽可能短的时间内由m 台机器处理完。
设计算法,并讨论是否可获最优解。
解:对于处理机j ,用S[j] 表示处理机j 已有的作业数,用P[j,k]表示处理机j 的第k 个作业的序号 。
1)将作业按照t[1]≥t[2]≥……≥t[n]排序2)S[1:m]清零 j ←0 //从第一个处理机开始安排3) for i←1 to n do //安排n个作业j←j mod m +1 //选下一个处理机S[j]←S[j]+1;P[j,S[j]]←i ;Repeat2. 设有n种面值为:d1≥d2≥……≥d n的钱币,需要找零钱M,如何选择钱币d k,的数目X k,满足d1×X i+……d n×X n M ,使得X i+……X n 最小请选择贪心策略,并设计贪心算法。
解:贪心原则:每次选择最大面值硬币。
CU←M;i←1;X←0 // X为解向量While CU≠0 doX[i]←CU div d[i] // X[i]为第i中硬币数CU←CU-d[i]*X[i]i←i+1;repeat3.有n个物品,已知n=7, 利润为P=(10,5,15,7,6,18,3),重量W=(2,3,5,7,1,4,1),背包容积M=15,物品只能选择全部装入背包或不装入背包,设计贪心算法,并讨论是否可获最优解。
解:定义结构体数组G,将物品编号、利润、重量作为一个结构体:例如G[k]={1,10,2} 求最优解,按利润/重量的递减序,有{5,6,1,6} {1,10,2,5}{6,18,4,9/2} {3,15,5,3} {7,3,1,3}{2,5,3,5/3} {4,7,7,1} 算法procedure KNAPSACK(P,W,M,X,n)//P(1:n)和W(1;n)分别含有按P(i)/W(i)≥P(i+1)/W(i+1)排序的n件物品的效益值和重量。