算法考试试题及答案复习进程

合集下载

算法考试题目及答案解析

算法考试题目及答案解析

算法考试题目及答案解析一、单项选择题1. 在算法中,以下哪个选项不是算法的特性?A. 有穷性B. 确定性C. 可行性D. 随机性答案:D解析:算法的特性包括有穷性、确定性和可行性。

有穷性指的是算法必须在执行有限步骤后终止;确定性指的是算法的每一步操作都是明确的,不存在二义性;可行性指的是算法的每一步操作都必须足够基本,以至于可以准确地执行。

随机性并不是算法的特性之一。

2. 以下哪个排序算法的时间复杂度是O(n^2)?A. 快速排序B. 归并排序C. 冒泡排序D. 堆排序答案:C解析:冒泡排序是一种简单的排序算法,其时间复杂度为O(n^2),在最坏的情况下,需要比较每一对元素。

快速排序的平均时间复杂度为O(n log n),归并排序的时间复杂度为O(n log n),堆排序的时间复杂度为O(n log n)。

3. 在图的遍历中,深度优先搜索(DFS)使用的栈是什么类型的栈?A. 后进先出栈B. 先进后出栈C. 先进先出栈D. 随机进随机出栈答案:B解析:深度优先搜索(DFS)使用的数据结构是栈,遵循的是先进后出的原则,即后进先出栈。

4. 哈希表解决冲突的方法不包括以下哪一项?A. 分离链接法B. 开放寻址法C. 链地址法D. 二分查找法答案:D解析:哈希表解决冲突的方法主要包括分离链接法、开放寻址法和链地址法。

二分查找法是一种查找算法,不是用来解决哈希表冲突的方法。

5. 以下哪个算法不是动态规划算法?A. 斐波那契数列B. 0-1背包问题C. 最短路径问题D. 快速排序答案:D解析:斐波那契数列、0-1背包问题和最短路径问题都可以使用动态规划算法来解决。

快速排序是一种排序算法,不属于动态规划算法。

二、多项选择题1. 以下哪些是算法设计中常用的数据结构?A. 数组B. 链表C. 栈D. 队列E. 树答案:ABCDE解析:数组、链表、栈、队列和树都是算法设计中常用的数据结构,它们各自有不同的特点和适用场景。

算法程序测试题及答案

算法程序测试题及答案

算法程序测试题及答案一、选择题(每题2分,共10分)1. 以下哪个选项是算法的基本特征之一?A. 有穷性B. 可扩展性C. 可读性D. 可维护性答案:A2. 在算法设计中,下列哪个选项不是算法的时间复杂度?A. O(n)B. O(n^2)C. O(log n)D. O(1)答案:D3. 算法的空间复杂度通常用来描述什么?A. 算法执行的时间B. 算法占用的存储空间C. 算法的输入数据量D. 算法的输出结果大小答案:B4. 以下哪个排序算法的时间复杂度是O(n^2)?A. 快速排序B. 归并排序C. 冒泡排序D. 堆排序答案:C5. 在算法分析中,大O符号表示什么?A. 算法的运行时间B. 算法的执行步骤C. 算法的输入大小D. 算法性能的上界答案:D二、填空题(每题3分,共15分)1. 算法的输入输出定义了算法的______。

答案:功能2. 算法的每一步操作必须是明确的,这体现了算法的______。

答案:确定性3. 算法的每一步操作必须足够基本,以至于可以被______。

答案:执行4. 算法的每一步操作必须足够基本,以至于可以被______。

答案:执行5. 算法的时间复杂度分析中,常忽略低阶项和______。

答案:常数因子三、简答题(每题5分,共20分)1. 描述算法的有穷性特征。

答案:算法的有穷性特征指的是算法必须在执行有限步骤后终止,不能无限循环。

2. 算法的确定性特征如何体现?答案:算法的确定性特征体现在算法的每一步骤都必须有明确的定义,对于相同的输入,算法总是产生相同的输出。

3. 算法的输入输出如何定义?答案:算法的输入输出定义了算法的功能,即算法接收什么数据作为输入,以及根据这些输入数据产生什么结果作为输出。

4. 算法的空间复杂度分析包括哪些内容?答案:算法的空间复杂度分析包括算法执行过程中所需的存储空间,这通常与算法中使用的变量、数据结构和递归调用的深度有关。

结束语:通过以上题目的练习,可以加深对算法基本概念和特性的理解,为进一步学习算法设计和分析打下坚实的基础。

算法期末考试题及答案

算法期末考试题及答案

算法期末考试题及答案一、选择题(每题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. 解释什么是动态规划,并给出一个动态规划问题的例子。

算法基础试题及答案

算法基础试题及答案

算法基础试题及答案一、单项选择题(每题2分,共10分)1. 以下哪个选项是算法的基本特征之一?A. 有穷性B. 可行性C. 确定性D. 以上都是答案:D2. 在算法设计中,以下哪个步骤是不必要的?A. 问题定义B. 算法描述C. 算法实现D. 算法测试答案:D3. 算法的时间复杂度通常用来描述什么?A. 算法的运行时间B. 算法的空间需求C. 算法的执行步骤数量D. 算法的输入数据大小答案:A4. 以下哪个不是算法设计的基本方法?A. 递归B. 排序C. 搜索D. 迭代答案:B5. 在算法分析中,大O符号表示什么?A. 算法执行的时间B. 算法执行的空间C. 算法执行的最坏情况D. 算法执行的平均情况答案:C二、填空题(每题2分,共10分)1. 算法的输入输出定义了算法的______,算法的步骤定义了算法的______。

答案:功能;实现2. 算法的时间复杂度和空间复杂度是衡量算法______的两个重要指标。

答案:效率3. 在算法设计中,______是一种通过重复执行代码块来实现的算法结构。

答案:循环4. 递归算法通常包括两个基本部分:______和______。

答案:基本情况;递归情况5. 在算法分析中,______复杂度描述了算法执行过程中所需的存储空间。

答案:空间三、简答题(每题5分,共20分)1. 请简述算法的五个基本特征。

答案:算法的五个基本特征包括有穷性、确定性、可行性、输入和输出。

有穷性指算法必须在执行有限步骤后结束;确定性指算法的每一步都必须有明确的定义;可行性指算法的每一步都必须足够基本,以至于可以精确地执行;输入指算法有0个或多个输入,以描述运算的对象和初始条件;输出指算法至少有一个输出,输出表示算法运行的结果。

2. 算法的时间复杂度和空间复杂度有什么区别?答案:时间复杂度主要关注算法执行所需的时间,它通常与算法中操作的数量有关,而空间复杂度则关注算法执行过程中所需的存储空间。

算法考试题库及答案

算法考试题库及答案

算法考试题库及答案一、单项选择题(每题2分,共20分)1. 在算法中,以下哪个不是排序算法?A. 快速排序B. 归并排序C. 冒泡排序D. 深度优先搜索答案:D2. 算法的时间复杂度是指算法执行过程中所需要的基本操作的个数与输入数据量之间的关系。

A. 正确B. 错误答案:A3. 以下哪个算法用于解决图的最短路径问题?A. 迪杰斯特拉算法B. 快速傅里叶变换C. 克鲁斯卡尔算法D. 动态规划答案:A4. 在数据结构中,栈(Stack)是一种后进先出(LIFO)的数据结构。

A. 正确B. 错误答案:A5. 递归算法的主要缺点是?A. 代码复杂B. 占用内存空间大C. 执行速度慢D. 以上都是答案:B6. 以下哪个数据结构最适合实现图?A. 数组B. 链表C. 树D. 邻接矩阵答案:D7. 在算法设计中,分治法是一种将问题分解成多个相同或相似的子问题,递归解决子问题,然后将结果合并的方法。

A. 正确B. 错误答案:A8. 动态规划算法通常用于解决哪些类型的问题?A. 排序问题B. 最优化问题C. 查找问题D. 搜索问题答案:B9. 以下哪个算法不是贪心算法?A. 霍夫曼编码B. 迪杰斯特拉算法C. 克鲁斯卡尔算法D. 快速排序答案:D10. 在算法中,空间复杂度是指算法执行过程中所需要的存储空间的大小。

A. 正确B. 错误结束语:以上为算法考试题库及答案,希望对同学们的复习有所帮助。

经典算法试题及答案

经典算法试题及答案

经典算法试题及答案题目一:找出旋转排序数组中的最小值题目描述:假设按照升序排序的数组在预先未知的某个点上进行了旋转。

例如,数组 `[0,1,2,4,5,6,7]` 可能变为`[4,5,6,7,0,1,2]`。

请找出并返回数组中的最小元素。

说明:- 原数组是一个升序排序的数组- 数组中可能包含重复的元素- 你的算法应该具有 O(log n) 的时间复杂度答案解析:这个问题可以通过二分查找的方法来解决。

以下是详细的解题步骤:1. 初始化两个指针 `left` 和 `right` 分别指向数组的开头和结尾。

2. 当 `left` 小于 `right` 时,执行以下步骤:- 找到中间位置 `mid`。

- 如果 `nums[mid]` 大于 `nums[right]`,则最小值在 `mid+1` 到 `right` 之间,更新 `left = mid + 1`。

- 如果 `nums[mid]` 小于 `nums[right]`,则最小值在 `left` 到 `mid` 之间,更新 `right = mid`。

- 如果 `nums[mid]` 等于 `nums[right]`,则无法判断最小值的位置,需要减少 `right`。

3. 当 `left` 等于 `right` 时,返回 `nums[left]`。

代码实现:```pythondef findMin(nums):left, right = 0, len(nums) - 1while left < right:mid = left + (right - left) // 2if nums[mid] > nums[right]:left = mid + 1elif nums[mid] < nums[right]:right = midelse:right -= 1return nums[left]```题目二:合并两个有序链表题目描述:将两个有序链表合并为一个新的有序链表。

计算机算法试题(含答案)

计算机算法试题(含答案)

算法设计与分析试卷一、填空题(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分)intmaxsum(intn,int*a,int&bestj){intsum=0;for(inti=1;i<=n;i++)for(intj=i;j<=n;j++)intthissum=0;for(intk=i;k<=j;k++)_____;if(thissum>sum){sum=thissum;______;bestj=j;}}returnsum;}4、设计最优二叉搜索树问题的动态规划算法OptimalBinarysearchTree?(15分)V oidOptimalBinarysearchTree(inta,intn,int**m,int**w){for(inti=0;i<=n;i++){w[i+1][i]=a[i];m[i+1][i]=____;}for(intr=0;r<n;r++)for(inti=1;i<=n-r;i++){intj=i+r;w[i][j]=w[i][j-1]+a[j]+b[j];m[i][j]=______;s[i][j]=i;for(intk=i+1;k<=j;k++){intt=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)}最小平均查找长度综合题:20min{ai+T(N-{i},bi)}(1=<i<=n)thissum+=a[k]besti=i0m[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}N11={1,3,4}N12={2}所以N11→N12得:1→3→4→2简答题:1、(1)a[1:n]的最大子段和与a[1:n/2]的最大子段和相同。

算法复习题答案

算法复习题答案

算法复习题答案一、选择题1. 算法的时间复杂度是指:A. 算法执行所需的时间B. 算法执行所需的内存空间C. 算法执行时所需操作的数量D. 算法执行时占用的CPU资源答案:C2. 在排序算法中,最坏情况下时间复杂度为O(n^2)的排序方法是:A. 快速排序B. 归并排序C. 堆排序D. 冒泡排序答案:D3. 递归算法的基本原理是:A. 重复执行B. 循环执行C. 将问题分解为更小的子问题D. 将问题转化为更复杂的问题答案:C二、填空题1. 动态规划算法通常用于解决具有_______性质的问题。

答案:最优子结构2. 哈希表的冲突可以通过_______方法来解决。

答案:链地址法或开放地址法3. 贪心算法在每一步选择中都采取在当前状态下的_______操作。

答案:最优三、简答题1. 请简述二分查找算法的基本原理及其时间复杂度。

答案:二分查找算法是一种在有序数组中查找特定元素的算法。

其基本原理是将目标值与数组中间的元素进行比较,如果目标值等于中间元素,则查找成功;如果目标值小于中间元素,则在数组的左半部分继续查找;如果目标值大于中间元素,则在数组的右半部分继续查找。

这个过程将不断重复,直到找到目标值或查找范围为空为止。

二分查找算法的时间复杂度为O(log n)。

2. 什么是分治算法?请举例说明。

答案:分治算法是一种算法设计技术,它将一个复杂的问题分解成若干个规模较小但相似的子问题,递归地解决这些子问题,然后将子问题的解合并以解决原始问题。

例如,归并排序就是一种典型的分治算法,它将待排序的数组分成两半,分别对这两半进行排序,然后将排序好的两半合并成一个有序数组。

四、计算题1. 给定一个数组A = [3, 5, 1, 4, 2],请使用快速排序算法对其进行排序,并给出排序过程中的每一步操作。

答案:快速排序的基本思想是选择一个元素作为“基准”(pivot),然后将数组分为两部分,一部分包含所有小于基准的元素,另一部分包含所有大于基准的元素。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

算法考试试题及答案一、填空题(本题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个元素的子集树问题,最坏情况下其解空间的叶结点数目为( )。

A.n!B.2nC.2n+1-1D. 2n-17、程序可以不满足以下( )特征A.输入B.输出C.确定性D.有限性8、以下( )不能在线性时间完成排序A.计数排序B.基数排序C.堆排序D.桶排序9、以下( )不一定得到问题的最优解A.贪心算法B.回溯算法C.分支限界法D.动态规划法10、以下()不包括在图灵机结构中A.控制器B.读写磁头C.计算器D.磁带三、简答题(本题20分,每小题5分)1、设有n=2k个运动员要进行循环赛,现设计一个满足以下要求的比赛日程表:①每个选手必须与其他n-1名选手比赛各一次;②每个选手一天至多只能赛一次;③循环赛要在最短时间内完成。

(1)如果n=2k,循环赛最少需要进行几天;(2)当n=22=4时,请画出循环赛日程表。

2、简述最优子结构性质。

3、简单描述回溯法基本思想。

4、何谓P、NP问题四、算法填空(本题30分,每空2分)1、Dijkstra算法是解单源最短路径问题的贪心算法。

请你阅读下面伪代码并在空白处填上适当的代码。

// G是一个n个结点的有向图,它由成本邻接矩阵w[u,v]表示,D[v]表示结点v到源结点s的最短路径长度,p[v]记录结点v的父结点。

Init-single-source(G,s)1.for each vertex v∈V[G]2.do {d[v]=∞ p[v]=NIL}3. d[s]=0Relax(u,v,w)1.if 12.then {d[v]=d[u]+w[u,v]p[v]=u}dijkstra(G,w,s)1. 22. S=Φ3. Q=V[G]4.while Q<> 3do u=min(Q)S=S∪{u}for each vertex v∈adj[u] //所有u的邻接点 vdo 42、某工厂预计明年有N个新建项目,每个项目的投资额 w[k]及其投资后的收益 v[k]已知。

投资总额为C,问如何选择项目才能使总收益最大。

Invest-Program( ){ for (j=0;j<=C;j++)5for (j=w[n];j<=C;j++)m[n][j]=v[n];for (i=n-1;i>1;i--){ int jMax=min(w[i]-1,c);for(j=0;j<=jMax;j++)m[i][j]= 6 ;for (j=w[i];j<=C;j++)m[i][j]=max( 7 );}m[1][c]=m[2][c];if( 8 )m[1][c]=max(m[1][c],m[2][c-w[1]]+v[1]);}3、N后问题(1)用二维数组A[N][N]存储皇后位置,若第i行第j列放有皇后,则A[i][j]为非0值,否则值为0。

(2)分别用一维数组M[N]、L[2*N-1]、R[2*N-1]表示竖列、左斜线、右斜线是否放有棋子,有则值为1,否则值为0。

for(j=0;j<N;j++)if( 9 ) /*安全检查*/{ A[i][j]=i+1; /*放皇后*/10 ;if(i==N-1) 输出结果;else 11 ;; /*试探下一行*/12 ; /*去皇后*/13 ;;}4、通过键盘输入一个高精度的正整数n(n的有效位数≤240),去掉其中任意s个数字后,剩下的数字按原左右次序将组成一个新的正整数。

编程对给定的n 和s,寻找一种方案,使得剩下的数字组成的新数最小。

delete(n ,s){输入s, n;while( s > 0 ){ 14 //从串首开始找while ( 15 )i++;delete(n,i); //删除串n的第i个字符s--;}while (length(n)>1)&& (n[1]=‘0’)delete(n,1); //删去串首可能产生的无用零输出n;}五、请你阐述prim算法的基本思想。

并给出下图的最小生成树(要求画出生成树,分析过程可以省略)(本题10分)六、算法分析题(本题10分)数字全排列问题:任意给出从1到N的N个连续的自然数的各种排列。

如N=3时,共有以下6种排列方式:123,132,213,231,312,321。

算法描述如下。

画出N=3时递归调用时堆栈变化情况,写出相对应i,j的值。

设数组b的初始值为1,2,3。

perm(int b[], int i){int k,j;if(i==N)输出;elsefor(j=i;j<=num;j++){swap(b[i],b[j]);perm(b,i+1);swap(b[j],b[i]);}}/*初始调用时i = 1;*/答案:一、填空题(本题10分,每空1分)1、算法效率2、O(n)3、时间、空间时间复杂度、空间复杂度4、2n5、直接间接6、独立二、选择题(本题20分,每小题2分)1-5:BABCA 6-10:BDCAC三、简答题(本题20分,每小题5分)1、(1)2k-1天(2分);(2)当n=22=4(3分)。

2、某个问题的最优解包含着其子问题的最优解。

这种性质称为最优子结构性质。

3、回溯法的基本思想是在一棵含有问题全部可能解的状态空间树上进行深度优先搜索,解为叶子结点。

搜索过程中,每到达一个结点时,则判断该结点为根的子树是否含有问题的解,如果可以确定该子树中不含有问题的解,则放弃对该子树的搜索,退回到上层父结点,继续下一步深度优先搜索过程。

在回溯法中,并不是先构造出整棵状态空间树,再进行搜索,而是在搜索过程,逐步构造出状态空间树,即边搜索,边构造。

4、P(Polynomial问题):也即是多项式复杂程度的问题。

NP就是Non-deterministic Polynomial的问题,也即是多项式复杂程度的非确定性问题。

四、算法填空(本题30分,每空2分)1、(1)d[v]>d[u]+w(u,v)(2)Init-single-source(G,s)(3)Φ(4)Relax(u,v,w)2、(5)m[n][j]=0;(6)m[i+1][j](7)m[i+1][j],m[i+1][j-w[i]]+v[i](8)c>=w[1]3、(9) !M[j]&&!L[i+j]&&!R[i-j+N](10) M[j]=L[i+j]=R[i-j+N]=1;(11) try(i+1,M,L,R,A)(12) A[i][j]=0(13) M[j]=L[i+j]=R[i-j+N]=04、(14)i=1;(15)(i<length(n))&&(n[i]<n[i+1])五、阐述prim算法的基本思想(本题10分)(5分) prim算法的基本思想是:设G=(V,E)是连通带权图,V={1,2,…,n}。

首先置U={1},然后,只要U是V的真子集,就作如下的贪心选择:选取满足条件i∈U,j∈V-U,且c[i][j]最小的边,将顶点j添加到U中。

这个过程一直进行到U=V时为止。

在这个过程中选取到的所有边恰好构成G的一棵最小生成树。

(5分)最小生成树如下:六、算法设计题(本题10分)perm(int b[], int i){int k,j;if(i==N)输出b数组各元素值;elsefor(j=i;j<=N;j++){swap(b[i],b[j]);perm(b,i+1); (1)(2)(3)(4)(5)(6)(7)(8)(9)swap(b[j],b[i]);}}/*初始调用时i = 1;*/ 输出2,1,3 (5)i=3,j=2 (4)i=1,j=2 (3) i=3,j=3 (1) i=1,j=1输出1,3,2 输出1,2,3 (2) i=3,j=2 (7)i=1,j=3输出2,3,1 (6)i=3,j=3 (9)i=3,j=3输出3,2,1 (8)i=3,j=2。

相关文档
最新文档