算法分析试题.doc

合集下载

数据结构与算法分析考试试题

数据结构与算法分析考试试题

数据结构与算法分析考试试题一、选择题(共 20 小题,每小题 3 分,共 60 分)1、在一个具有 n 个元素的顺序表中,查找一个元素的平均时间复杂度为()A O(n)B O(logn)C O(nlogn)D O(n²)2、以下数据结构中,哪一个不是线性结构()A 栈B 队列C 二叉树D 线性表3、一个栈的入栈序列是 1,2,3,4,5,则栈的不可能的出栈序列是()A 5,4,3,2,1B 4,5,3,2,1C 4,3,5,1,2D 1,2,3,4,54、若一棵二叉树的先序遍历序列为 ABCDEFG,中序遍历序列为CBDAEGF,则其后序遍历序列为()A CDBGFEAB CDBFGEAC CDBAGFED BCDAGFE5、具有 n 个顶点的无向完全图的边数为()A n(n 1)B n(n 1) / 2C n(n + 1) / 2D n²6、以下排序算法中,在最坏情况下时间复杂度不是O(n²)的是()A 冒泡排序B 选择排序C 插入排序D 快速排序7、在一个长度为 n 的顺序表中,删除第 i 个元素(1≤i≤n)时,需要向前移动()个元素。

A n iB iC n i + 1D n i 18、对于一个具有 n 个顶点和 e 条边的有向图,其邻接表表示中,所有顶点的边表中边的总数为()A eB 2eC e/2D n(e 1)9、以下关于哈夫曼树的描述,错误的是()A 哈夫曼树是带权路径长度最短的二叉树B 哈夫曼树中没有度为 1 的节点C 哈夫曼树中两个权值最小的节点一定是兄弟节点D 哈夫曼树中每个节点的权值等于其左右子树权值之和10、用邻接矩阵存储一个具有 n 个顶点的无向图时,矩阵的大小为()A nB n²C (n 1)²D (n + 1)²11、下列关于堆的描述,正确的是()A 大根堆中,每个节点的值都大于其左右子节点的值B 小根堆中,每个节点的值都小于其左右子节点的值C 堆一定是完全二叉树D 以上都对12、在一个具有 n 个单元的顺序存储的循环队列中,假定 front 和rear 分别为队头指针和队尾指针,则判断队满的条件是()A (rear + 1) % n == frontB (front + 1) % n == rearC rear == frontD rear == 013、已知一个图的邻接表如下所示,从顶点 1 出发,按深度优先搜索法进行遍历,则得到的一种可能的顶点序列为()|顶点|邻接顶点|||||1|2, 3||2|4, 5||3|5||4|6||5|6||6| |A 1, 2, 4, 6, 5, 3B 1, 2, 5, 3, 4, 6C 1, 2, 3, 5, 4, 6D 1, 3, 2, 4, 5, 614、对线性表进行二分查找时,要求线性表必须()A 以顺序方式存储,且元素按值有序排列B 以顺序方式存储,且元素按值无序排列C 以链式方式存储,且元素按值有序排列D 以链式方式存储,且元素按值无序排列15、以下算法的时间复杂度为 O(nlogn)的是()A 顺序查找B 折半查找C 冒泡排序D 归并排序16、若某链表最常用的操作是在最后一个节点之后插入一个节点和删除最后一个节点,则采用()存储方式最节省时间。

算法设计与分析a卷及答案

算法设计与分析a卷及答案

算法设计与分析试题A及答案一.填空题:(每题4分,共20分)1.算法是指(解决问题的)一种方法或一个过程,是(若干指令的)有穷序列。

2质。

3. 贪心选择性质是指所求问题的整体最优解可以通过一系列局部最优的选择来达到。

4.递归函数的两大基本要素是_递归方程和边界条件_ .5.在回溯法中,一个问题的解空间是指一个大的解决方案可以看作是由若干个小的决策组成。

很多时候它们构成一个决策序列。

解决一个问题的所有可能的决策序列构成该问题的解空间.二.简答题:(每题5分,共20分)1.简述分治法所能解决的问题一般应具有的特征。

1.)该问题的规模缩小到一定的程度就可以容易地解决;2.)该问题具有最优子结构性质;3.)利用该问题分解出的子问题的解可以合并为该问题的解;4.)该问题所分解出的各个子问题是相互独立的。

2.设有待安排的8个活动的开始时间和结束时间如下表。

请采用贪心算法给出活动安排序解:将待安排的8个活动的开始时间和结束时间按结束时间的非减序排列如下:用贪心算法给出活动安排序列:1,3,6,8。

贪心选择的意义是使剩余的可安排时间段极大化,以便安排尽可能多的相容活动。

3.请描述分治法的具体过程。

将原问题划分成k 个子问题。

对这k 个子问题分别求解。

如果子问题的规模仍然不够小,则再划分为k 个子问题,如此递归的进行下去,直到问题规模足够小,很容易求出其解为止。

将求出的小规模的问题的解合并为一个更大规模的问题的解,自底向上逐步求出原来问题的解。

4. Fibonacci 数列如下定义:10()11(1)(2)1n F n n F n F n n =⎧⎪==⎨⎪-+->⎩1、 请设计一个递归算法,计算F(n)。

2、 分析算法的时间复杂性。

解 1、int fibonacci(int n) { if (n <= 1) return 1;return fibonacci(n-1)+fibonacci(n-2); }2、T(n)=T(n-1)+T(n-2)。

《算法设计与分析》考试题目及答案(DOC)

《算法设计与分析》考试题目及答案(DOC)
}
Hanoi 塔
D. void hanoi(int n, int C, int A, int B) { if (n > 0) { hanoi(n-1, A, C, B); move(n,a,b); hanoi(n-1, C, B, A); }
3. 动态规} 划算法的基本要素为(C) A. 最优子结构性质与贪心选择性质 B.重叠子问题性质与贪心选择性质 C.最优子结构性质与重叠子问题性质 D. 预排序与递归调用
(排列树)算法框架。 8. 用回溯法解 0/1 背包问题时,该问题的解空间结构为(子集树)结构。 9.用回溯法解批处理作业调度问题时,该问题的解空间结构为(排列树)结
构。 10.用回溯法解 0/1 背包问题时,计算结点的上界的函数如下所示,请在空
格中填入合适的内容:
Typep Knap<Typew, Typep>::Bound(int i) {// 计算上界
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.重叠子问题性质与贪心选择性质
《算法分析与设计》期末复习 法则的流水作业调度采用的算法是(D)
A. 贪心算法
B. 分支限界法 C.分治法
D. 动态规划算法
2.Hanoi 塔问题如下图所示。现要求将塔座 A 上的的所有圆盘移到塔座 B 上, 并仍按同样顺序叠置。移动圆盘时遵守 Hanoi 塔问题的移动规则。由此设计出 解 Hanoi 塔问题的递归算法正确的为:(B)

算法设计分析期中试题

算法设计分析期中试题

《算法设计与分析》期中试卷一、叙述分治算法的基本思想及一般算法设计模式;二、叙述动态规划算法的基本步骤及动态规划算法的基本要素;三、改进课本P74的Lcs算法,使改进算法不用数组b亦可在O(m+n)的时间内构造最长公共序列;四、求下列函数的渐近表达式(1). 3n2+10n(2).n2/10+2n(3)21+1/n(4)logn3(5)10log3n五、对于下列各组函数发f(n)和g(n),确定f(n)=O((g(n)))或者f(n)= ((g(n)))或者f(n)=θ((g(n))),并简述理由(1). f(n)=logn2 , g(n)=logn+5;(2). f(n)=logn2 , g(n)= √n;(3), f(n)=n, g(n)= logn2;(4). f(n)=nlogn+n,g(n)=logn;(5). f(n)=10.g(n)=log10;(6). f(n)=log2n g(n)=logn(7). f(n)=2n g(n)= 3n;(8). f(n)=2n g(n)= 100n2;六、设a[0:n-1]是已排好序的数组,请改写二分搜索算法,使得当搜索元素x不再数组中时,返回小于x的最大元素位置i和大于x 的最小元素位置j。

当搜索元素在数组中时,i和j相同,均为x 在数组中的位置七、设a[0:n-1]是有n个元素的数组,k(0<=k<=n-1)是非负整数。

试设计一个算法将子数组a[0:k]与a[k+1:n-1]换位。

要求算法在最坏的情况下耗时O(n),且只用到O(1)的辅助空间。

八、在一个由元素组成的表中出现次数最多的元素称为众数。

试写一个寻找众数的算法,并分析其计算复杂性。

九、设计一个O(n2)时间的算法,找出由n个数组成的序列的最长单调递增子序列。

十、给定n中物品和一背包,物品i的重量是ω,体积是b i,其价值为v i ,背包的容量为C,容积为D。

问:应该如何选择装入背包中的物品,使得装入背包中的物品的总价值最大?在选择装入背包的物品时,对每种物品i只有两种选择,即装入背包或不装入背包,不能将物品i装入背包多次,也不能只装入部分的物品i。

(完整word版)算法设计试题(word文档良心出品)

(完整word版)算法设计试题(word文档良心出品)

一、选择题(15*2分)1.算法分析是( C)A.将算法用某种程序设计语言恰当地表示出来B.在抽象数据集合上执行程序,以确定是否会产生错误的结果C.对算法需要多少计算时间和存储空间作定量分析D.证明算法对所有可能的合法输入都能算出正确的答案2.算法与程序的区别在于算法具有(C )A.能行性B.确定性C.有穷性D.输入和输出3.记号Ω的定义正确的是(B)A.O(g(n)) = { f(n) | 存在正常数c和n0使得当n≥n0 有f(n) ≤ cg(n) }B.O(g(n)) = { f(n) | 存在正常数c和n0使得当n≥n0有 cg(n) ≤ f(n) }>0使得对所有n≥n0 C.(g(n)) = { f(n) | 对于任何正常数c>0,存在正数和n有f(n)<cg(n) }D.(g(n)) = { f(n) | 对于任何正常数c>0,存在正数和n>0使得对所有n≥n0有cg(n) < f(n) }4.衡量一个算法好坏的标准是(C )A.运行速度快B. 占用空间少C.时间复杂度低D. 代码短5.二分搜索算法是利用(A)实现的算法。

A.分治法B.动态规划法C.贪心法D.回溯法6.下面问题(B )不能使用贪心法解决。

A. 单源最短路径问题B. N皇后问题C. 最小代价生成树问题D. 背包问题7.用贪心法设计算法的关键是( B )。

A.将问题分解为多个子问题来分别处理B.选好最优量度标准C.获取各阶段间的递推关系式D.满足最优性原理8.找最小生成树的算法Kruskal的时间复杂度为( D )(其中n为无向图的结点数,m为边数)A.O(n2) B.O(mlogn) C.O(nlogm) D.O(mlogm)9.回溯法搜索状态空间树是按照(C )的顺序。

A.中序遍历B.广度优先遍历C.深度优先遍历D.层次优先遍历10. 一个问题可用动态规划算法或贪心算法求解的关键特征是问题的( B )A.重叠子问题B.最优子结构性质C.最优量度标准性质D.定义最优解11.程序块(A)是回溯法中遍历排列树的算法框架程序。

算法分析与设计试卷及参考答案

算法分析与设计试卷及参考答案

算法分析与设计试卷及参考答案济南⼤学继续教育学院算法分析与设计试卷(A)学年:学期:年级:专业:学习形式:层次:(本试题满分100分,时间90分钟)⼀、单选题(每⼩题2分,共计20分。

)1. 下列情况不适合使⽤计数排序的是()。

A 要排序的数据表的数量很⼤B 要排序的数据表中有相同的关键字C 要排序的数据表基本有序D 要排序的数据表元素各不相同2. 集合{A,B}的幂集合为()。

A.{A},{B}B.{A},{B},ΦC. { {A},{B}} D {{A,B},{A},{B},Φ}3.下列字符串序列不符合字典排序的是()。

A. abc acb bca B. abc acb cbaC. bac bca abc D abc bac bca4.对于根树,出度为零的节点为()。

A0节点B根节点C叶节点D分⽀节点5.对完全⼆叉树⾃顶向下,从左向右给节点编号,节点编号为10的⽗节点编号为()。

A0B2C4D66.下列程序段的算法时间的复杂度为()。

for i ←0 to n dofor j ←0 to m do s //某种基本操作A O(n2)B O(m2)C (m+n)D O(m*n)7.三个盘⼦的汉诺塔,⾄少要执⾏移动操作的次数为 ( )。

A 1次B 3次C 6次D 7次8.与算法英⽂单词algorithm具有相同来源的单词是()。

A logarithmB algirosC arithmosD algebra9.从排序过程是否完全在内存中显⽰,排序问题可以分为()。

A稳定排序与不稳定排序B内排序与外排序C直接排序与间接排序D主排序与辅助排序10.下列()不是衡量算法的标准。

A时间效率B空间效率C问题难度D适应能⼒⼆、简答题(每题8分,共计24分。

)1.贪婪技术的基本思想是什么?它有哪些应⽤(给出2种)?2. 拓扑排序的基本思想是什么?它可⽤于哪些实际问题中(给出2种)?3.是么是算法,算法与程序有什么区别?三、算法设计题(每题14分,共计56分。

(完整word版)计算机算法设计分析试题及答案

(完整word版)计算机算法设计分析试题及答案

算法设计与分析试卷一、填空题(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]的最大子段和相同。

算法题__计算机算法设计与分析期末试题4套(含答案)

算法题__计算机算法设计与分析期末试题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. 下列哪个是属于分治算法的例子?A. 冒泡排序B. 归并排序C. 顺序查找D. 选择排序答案:B2. 在排序算法中,时间复杂度最优的是:A. 冒泡排序B. 插入排序C. 归并排序D. 快速排序答案:C3. 哪个不是动态规划的特点?A. 具有重叠子问题B. 通过递归求解C. 需要保存子问题的解D. 具有最优子结构答案:B4. 在图的广度优先搜索算法中,使用的数据结构是:A. 栈B. 队列C. 数组D. 堆栈答案:B5. 在最小生成树算法中,下列哪个不属于贪心策略?A. Kruskal算法B. Prim算法C. Dijkstra算法D. Prim-Kruskal混合算法答案:C二、简答题1. 请简述分治算法的思想和应用场景。

答案:分治算法的思想是将原问题分解成若干个规模较小且类似的子问题,然后解决子问题,最后将子问题的解合并得到原问题的解。

其应用场景包括排序算法(如归并排序、快速排序)、搜索算法(如二分查找)等。

2. 什么是动态规划算法?请给出一个动态规划算法的示例。

答案:动态规划算法是一种通过将问题分解成子问题并解决子问题来解决复杂问题的方法。

它的特点是具有重叠子问题和最优子结构性质。

以斐波那契数列为例,可以使用动态规划算法求解每一项的值,而不需要重复计算。

3. 图的深度优先搜索和广度优先搜索有什么区别?答案:图的深度优先搜索(Depth First Search,DFS)是一种先访问子节点再访问兄弟节点的遍历算法,通常使用递归或者栈实现。

而广度优先搜索(Breadth First Search,BFS)则是以层次遍历的方式展开搜索,使用队列来实现。

DFS更适合用于搜索路径,BFS则适用于寻找最短路径等。

4. 请简述贪心算法的特点及其应用场景。

答案:贪心算法的特点是每一步都采取当前状态下最优的选择,以期望得到全局最优解。

然而,贪心算法并不一定能求解所有问题的最优解,但对于一些特定问题,贪心算法往往能得到近似最优解。

算法分析与设计试题

算法分析与设计试题

一、选择题(20分)1.最长公共子序列算法利用的算法是(B )。

A、分支界限法B、动态规划法C、贪心法D、回溯法2.实现棋盘覆盖算法利用的算法是(A )。

A、分治法B、动态规划法C、贪心法D、回溯法3.下面是贪心算法的基本要素的是(C )。

A、重叠子问题B、构造最优解C、贪心选择性质D、定义最优解4.回溯法的效率不依赖于下列哪些因素( D )A.满足显约束的值的个数B. 计算约束函数的时间C. 计算限界函数的时间D. 确定解空间的时间5.下面哪种函数是回溯法中为避免无效搜索采取的策略(B )A.递归函数 B.剪枝函数C。

随机数函数 D.搜索函数6.采用最大效益优先搜索方式的算法是(A )。

A、分支界限法B、动态规划法C、贪心法D、回溯法7.贪心算法与动态规划算法的主要区别是(B )。

A、最优子结构B、贪心选择性质C、构造最优解D、定义最优解8. 实现最大子段和利用的算法是(B )。

A、分治策略B、动态规划法C、贪心法D、回溯法9.优先队列式分支限界法选取扩展结点的原则是(C )。

A、先进先出B、后进先出C、结点的优先级D、随机10.下列算法中通常以广度优先方式系统搜索问题解的是(A)。

A、分支限界法B、动态规划法C、贪心法D、回溯法二、填空题(22分每空2分)1.算法是由若干条指令组成的有穷序列,且要满足输入、输出、确定性和有限性四条性质。

2、大整数乘积算法是用分治法来设计的。

3、以广度优先或以最小耗费方式搜索问题解的算法称为分支限界法。

4、舍伍德算法总能求得问题的一个解。

5、贪心选择性质是贪心算法可行的第一个基本要素,也是贪心算法与动态规划算法的主要区别。

6.快速排序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); 哈密顿环问题的算法可由回溯法设计实现。

算法设计与分析试卷及答案

算法设计与分析试卷及答案

湖南科技学院二○年学期期末考试信息与计算科学专业年级《算法设计与分析》试题考试类型:开卷试卷类型:C 卷考试时量:120分钟性的阶为结点的是 指1.试述回溯法的基本思想及用回溯法解题的步骤。

2.有8个作业{1,2,…,8}要在由2台机器M1和M2组成的流水线上完成加工。

每个作业加工的顺序都是先在M1给出一个最优调度方案,使得从第一个作业在机器M1上开始加工,到最后一个作业在机器M2上加工完成所需的时间最少,并计算所需的最少时间。

答:最优调度方案为所需的最少时间为:_______________________3.根据优先队列式分支限界法,求下图中从v1点到v9点的单源最短路径,请画出求得最优解的解空间树。

要求中间被舍弃的结点用×标记,获得中间解的结点用单圆圈○框起(如),最优解用双圆圈◎框起。

三、算法填空(每空2分,共计10分)设R={r1,r2,...,r n}是要进行排列的n个元素,其中元素r1,r2,...,r n可能相同,试设计一个算法,列出R的所有不同排列,并给出不同排列的总数。

算法如下,填写缺失的语句。

template<typenameType>Swap(R[k],R[i]);}}}四、算法设计(共计15分)设有n个程序{1,2,3...,n}要存放在长度为L的磁带上。

程序i存放在磁带上的长度是Li,1≤i≤n。

程序存储问题要求确定这n个程序在磁带上的一个存储方案,使得能够在磁带上存储尽可能多的程序,在保证存储最多程序的前提下还要求磁带的利用率达到最大。

(1)给出求解存储最多程序的算法,并证明算法的正确性;(2)给出求解使磁带的利用率达到最大的方案的算法思路。

五、算法设计(共计15分)通过键盘输入一个高精度的正整数n (n 的有效位数≤240),去掉其中任意s 个数字后,剩下的数字按原左右次序将组成一个新的正整数。

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

(完整版)算法设计与分析考试题及答案

(完整版)算法设计与分析考试题及答案

一、填空题(20分)1.一个算法就是一个有穷规则的集合,其中之规则规定了解决某一特殊类型问题的一系列运算,此外,算法还应具有以下五个重要特性:_________,________,________,__________,__________。

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所需的时间分别为a i和b i,且(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),并画出其解空间树,计算其最优值及最优解。

算法分析试题.doc

算法分析试题.doc

1-1什么叫数据?什么叫数据元素?什么叫数据项?1-2什么叫数据的物理结构?什么叫数据的存储结构?什么叫数据的操作?1-3数据结构课程主要讨论哪三个方面的问题?1-4分别画岀线性结构、树结构和图结构的逻辑示意图。

1-5什么叫类型?什么叫数据类型?什么叫抽象数据类型?1-6怎样利用抽象数据类型设计大型软件?1-7什么叫算法?算法的5个性质是什么?1-8根据算法的性质解释算法和程序的区别?1-9评判算法的优劣有哪几种方法?1-10什么叫算法的时间复杂度?怎样表示算法的时间复杂度?1-11设n为已在算法前边定义的整数类型,并已知n为正整数,分析下列各算法中加下划线语句的执行次数,并给出各算法的吋间复杂度T(n)o(1)int i = 1, k = 0;while (i < n-1){k = k+ 10* i:i 二i + 1;}(2)int i = 1, k = 0;do{k 二k + l()*i:i 二i + 1;} while (i != n);(3)inti= 1J = 1;while (i <= n && j <= n){i= i+ l;j=j+ 1;}(4)int x = n; /* n > 1 */int y = 0;while(x >= (y+l)*(y+l))y++;(5)int i, j, k, x = 0;for (i = 0; i < n; i++)for(j = 0;j<i;j++)for (k = 0; k < j; k++)x = x + 2;1-12设求解同一个问题有三种算法,三种算法各白的时间复杂度分别为0(/丿,0(2”丿和0(Mg n),哪种算法最可取?为什么?1-13按增长率从小到大的顺序排列下列各纽函数:(1)2," , (3/2) “, (2/3) \ (4/3) “(2)n, n?Z2> n2Z?, n!, n"(3)lb n, nxlb n, n2-1什么叫线性表?2-2什么叫顺序存储结构?什么叫链式存储结构?2-3给出线性表的抽象数据类型定义。

算法设计与分析(试题A卷)

算法设计与分析(试题A卷)

四川师范大学成教×××专业×××层次半脱产形式期末考试期末试卷第1页( 共6页)《算法设计与分析》课程试卷(A)答卷说明:1、考试方式 闭卷2、满分100分一、单项选择题(每小题3分,共30分)1、动态规划算法的基本要素为( )。

A 、最优子结构性质与贪心选择性质B 、重叠子问题性质与贪心选择性质C 、最优子结构性质与重叠子问题性质D.、预排序与递归调用2、算法分析中,记号O 表示( ),记号Ω表示( ),记号Θ表示( )。

A 、渐进下界B 、渐进上界C 、非紧上界D 、紧渐进界E 、非紧下界3、以下关于渐进记号的性质是正确的有:( )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))=⇔=4、下列算法中通常以自底向上的方式求解最优解的是( )。

四川师范大学成教××专业××层次××形式期末考试 ××试卷 第2页( 共6页) A 、备忘录法 B 、动态规划法 C 、贪心法 D 、回溯法5、衡量一个算法好坏的标准是( )。

A 、运行速度快B 、占用空间少C 、时间复杂度低D 、代码段6、实现棋盘覆盖算法利用的算法是( )。

A 、分治法B 、动态规划法C 、贪心法D 、回溯法7、下面关于NP 问题说法正确的是( )。

A 、NP 问题都是不可能解决的问题B 、P 类问题包含在NP 类问题中C 、NP 完全问题是P 类问题的子集D 、NP 类问题包含在P 类问题中8、矩阵连乘问题的算法可由( )设计实现。

A 、分支界限算法B 、动态规划算法C 、贪心算法9、( )是贪心算法与动态规划算法的共同点。

算法试卷

算法试卷

算法设计与分析课程试题一一、选择题1.选出不是算法所必须具备的特征()。

A有穷性B确切性C高效性D可行性2.下列()不是衡量算法的标准。

A 时间效率B 空间效率C 问题的难度D 适应能力3.与递推关系x(n)=2x(n-1)+1,x(1)=1等价的通项公式为()。

A x(n)=2nB x(n)=2n-1C x(n)=2n+1D x(n)=n!4.二维最近邻点问题,如果使用分治法,对于一个子集上的某一点,另一个子集上需要检查的点的个数是()。

A 1个B 2个C 6个D 8个5.下列是动态规划算法基本要素的是()。

A 最优子结构B构造最优解 C 贪心选择因子D界限函数6.()算法应用到广度优先遍历策略。

A 分支界限法B 动态规划法C分治法D回溯法7.Prim算法求最小生成树采用的是()算法思想。

A 贪心算法B 动态规划法C 回溯法D 蛮力法11.三个盘子的汉诺塔,至8.对于凸集下列说法正确的是()。

A 凸集中的所有点都属于凸包;B 凸集中任意两点的连线都在凸中;C 凸集中任意两点的连线都不在凸集中;D一个点集如果不是凸集,则点集中任意两点的连线都不在凸集中少9.对多段图问题描述不正确的是:;A、多段图是一个无向图B、可用向前处理法;C、可用向后处理法;D、可用分治法解决。

10.以下对回溯法描述正确的是:;A、解必须表示成一个2n-元组(x1,x1,x2,x2,﹒﹒﹒,x n,x n);B、回溯法的解必须满足一组综合的约束条件,称为解函数;C、满足显示约束的所有元组不能确定一个可能的解空间,D、隐式约束描述了元组中元素x i必须彼此相关的情况。

二、填空1.算法区别于程序:。

2.递推公式x(n)=x(n-1)+n,x(0)=0,x(n)= 。

3..按分治策略求解棋盘覆盖问题时,对于如图1所示的23×23的特殊棋盘,共需要____个L型骨牌;并在棋盘上填写L型骨牌的覆盖情况。

+ + - + - +++ - - - - + - + + + -- + + - - + -- - +图1 棋盘覆盖 图2 符号三角形4.对下述五个文件用贪心方法进行最优归并:文件x 1,x 2,x 3,x 4和x 5分别有18,24,8,6和28个记录;则文件移动的最少次数为:。

算法设计分析期末考试试卷

算法设计分析期末考试试卷

2011 年 12 月考试算法设计分析第一次作业一、单项选择题(本大题共 30 分,共 15 小题,每小题 2 分)1. 算法分析的两个主要方面是()。

A. 空间复杂度和时间复杂度B. 正确性和简单性C. 可读性和文档性D. 数据复杂度和程序复杂度2. 计算机算法指的是()。

A. 计算方法B. 排序方法C. 解决问题的方法和过程D. 调度方法3. 多阶段决策问题就是要在可以选择的那些策略中间选取一个()策略使在预定的标准下达到最好的效果。

A. 最优B. 最差C. 平衡D. 任意4. 根据排序元素所在位置的不同,排序分()。

A. 内排序和外排序B. 首排序和尾排序C. 顺序排序和逆序排序D. 堆排序和栈排序5. 算法必须具备输入、输出和()等 5 个特性。

A. 可执行性、可移植性和可扩充性B. 可行性、确定性和有穷性C. 确定性、有穷性和稳定性D. 易读性、稳定性和安全性6. 与分治法不同的是,适合于用动态规划求解的问题()A. 经分解得到子问题往往不是互相独立的B. 经分解得到子问题往往是互相独立的C. 经分解得到子问题往往是互相交叉的D. 经分解得到子问题往往是任意的7. 二分搜索算法的基本思想是将 n 个元素分成个数大致相同的两半,取 an/2与 x 进行比较:如果(),则只要在数组 a 的左半部继续搜索 x。

A. x<an/2B. xan/2C. xan/2D. xan/28. 活动安排问题就是在所给的活动集合中,选出()的相容活子集。

A. 最小B. 任意C. 最大D. 一个9. 在对问题的解空间树进行搜索的方法中一个活结点最多有一次机会成为活结点的是()A. 回溯法B. 分支限界法C. 回溯法和分支限界法D. 回溯法求解子集树问题10. 适用动态规划的问题必须满足()A. 最优化原理B. 无前效性C. 最优化原理和后效性D. 最优化原理和无后效性11. 算法的每种运算必须要有确切的定义不能有二义性以下符合算法确定性运算的是()A. 5/0B. 将 6 或 7 与 x 相加C. 未赋值变量参与运算D. fnfn-12F110n 为自然数12.直接或间接的调用自身的算法称为()。

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

1-1什么叫数据?什么叫数据元素?什么叫数据项?1-2什么叫数据的物理结构?什么叫数据的存储结构?什么叫数据的操作?1-3数据结构课程主要讨论哪三个方面的问题?1-4分别画岀线性结构、树结构和图结构的逻辑示意图。

1-5什么叫类型?什么叫数据类型?什么叫抽象数据类型?1-6怎样利用抽象数据类型设计大型软件?1-7什么叫算法?算法的5个性质是什么?1-8根据算法的性质解释算法和程序的区别?1-9评判算法的优劣有哪几种方法?1-10什么叫算法的时间复杂度?怎样表示算法的时间复杂度?1-11设n为已在算法前边定义的整数类型,并已知n为正整数,分析下列各算法中加下划线语句的执行次数,并给出各算法的吋间复杂度T(n)o(1)int i = 1, k = 0;while (i < n-1){k = k+ 10* i:i 二i + 1;}(2)int i = 1, k = 0;do{k 二k + l()*i:i 二i + 1;} while (i != n);(3)inti= 1J = 1;while (i <= n && j <= n){i= i+ l;j=j+ 1;}(4)int x = n; /* n > 1 */int y = 0;while(x >= (y+l)*(y+l))y++;(5)int i, j, k, x = 0;for (i = 0; i < n; i++)for(j = 0;j<i;j++)for (k = 0; k < j; k++)x = x + 2;1-12设求解同一个问题有三种算法,三种算法各白的时间复杂度分别为0(/丿,0(2”丿和0(Mg n),哪种算法最可取?为什么?1-13按增长率从小到大的顺序排列下列各纽函数:(1)2," , (3/2) “, (2/3) \ (4/3) “(2)n, n?Z2> n2Z?, n!, n"(3)lb n, nxlb n, n2-1什么叫线性表?2-2什么叫顺序存储结构?什么叫链式存储结构?2-3给出线性表的抽象数据类型定义。

2-4什么叫指针?什么叫头指针?什么叫头结点?2-5什么叫单链表?什么叫循环单链表?什么叫循环双向链表?2-6在链表设计屮,为什么通常采用带头结点的链表结构?2-7写出C语言动态申请和动态释放内存空间的malloc()函数和free()函数的函数原豐并说明函数中参数的含义。

2-8说明在顺序表屮实现插入操作和删除操作时为什么必须移动数据元素,以及插入操作和删除操作各自移动数据元索的方向?2-9对比顺序表和单链表,说明顺序表和单链表的主要优点和主耍缺点。

2-10什么叫线性结构?线性表是线性结构吗?为什么?2-11编写一个逐个输出顺序表中所冇数据元素的算法。

2-12编写一个逐个输出单链表屮所有数据元素的算法。

2-13线性表定位操作ListFind(L, x)的功能是:在线性表L中查找是否存在数据元素x,如果存在,返冋线性表中和x值相等的第1个数据元素的序号(序号编号从0开始;如果不存在,返回-1。

要求编写顺序表的定位操作算法。

2-14在冇些应用中,允许线性表中存在值相同的数据元素。

线性表的另一个删除操作ListDeleteMore(L, x)的功能是:删除线性表L中所有等于x的数据元素。

耍求编写单链表的删除操作算法。

2-15编写算法实现顺序表的逆置,即要求把顺序表A中的数据元素序列(如,a】,...,亦) 逆置为(如亠…,①,ao),并把逆置后的数据元素存储到顺序表B中。

2-16编写算法实现顺序表的就地逆置,即要求利用原顺序表的存储单元,把数据元素序歹!J (ao,3],...,a n-i)逆置为(a n.i,...,3j,a())o2-17编写算法实现单链表的逆置,即要求把单链表la中的数据元素序列(no,%...&.]) 逆置为(编亠...色,切),并把逆置后的数据元索存储到单链表lb中。

2-18编写算法实现单链表的就地逆置,即要求利用原单链表的结点空间,把数据元素序列(ao,3],...,a n.i)逆置为(a n_i,...,aj,ao)o2・19编写循环双向链表的求数据元素个数操作算法和取数据元素操作算法。

3-1什么叫堆栈?什么叫队列?3-2线性表、堆栈和队列这三种抽象数据类型有什么相同之处和不同之处?3-3在顺序队列屮,什么叫真溢出?什么叫假溢出?为什么顺序队列通常都采川顺序循环队列结构?3-4什么叫优先级队列?优先级队列和队列冇什么相同Z处和不同Z处?3-5举例说明堆栈、队列和优先级队列的用途。

复杂概念题:3-6设数据元素序列{a, b, c, d, e, f,g}的进堆栈操作和出堆栈操作可任意进行(排除堆栈为空时的出堆栈操作情况),下列哪些数据元索序列可由出堆栈序列得到:(1){d, e, c, f, b, g, a}; (2) {f, e, g, d, a, c, b};(3){e, f, d, g, b, c, a}; (4) {c, d, b, e, f, a, g}3-7画出借助堆栈把下列屮缀表达式转换成后缀表达式的过程:A * (B - D) + E / F3- 8对于一个堆栈,(1) 如果输入序列rfl A, B, C, D 组成,试给出全部町能的输出序列和不可能的输出序列。

(2) 设有n 个数据元素的序列顺序进栈,试给出可能的输出序列个数。

(3) 设有n 个数据元素的序列顺序进栈,试给出不可能的输出序列个数。

(4) 以n 二4为例,用(2)和(3)中得出的公式验证(1)的结论。

3- 9编写一个判断算术表达式中开括号和闭括号是否配对的算法。

3- 10给出采用设證标志位的方法解决“假溢出”问题的顺序循坏队列的初始化操作、入 队列操作和出队列操作的算法思想。

3- 11设计采用设置标志位方法解决“假溢出”问题的顺序循环队列的初始化操作、入队 列操作和出队列操作的函数。

3- 12仿照例3・3,编程序判断一个字符序列是否是回文,要求采用链式队列和链式堆栈。

3- 13编程序判断一个字符序列是否是回文,要求只使用堆栈,不使用队列。

3- 14编写一个顺序优先级队列的出队列操作算法,要求不考虑相同优先级时的先进先出 原则。

3- 15设顺序双向循环队列的数据结构定义为:typedef struet{DotaType list[MaxSize];int front;/*队头指针*/ int rear;/*队尾指针*/} BSeqCQueue;设Q 为BSeqCQueue 类型的变参,并设初始化操作时有:Q->rear = Q ->front = 0,现要求: (1) 给出顺序双向循坏队列满和空的条件。

(2) 给出顺序双向循环队列的入队列操作和出队列操作算法思想。

4- 1 设 SI = "Data Structure Course" , S2 = u Structure, S3 二"Base”,求:4- 2什么"I 串?串和字符在存储方法上冇什么不同?空串和空格串是否相同,为什么? 4- 3串是由字符组成的,长度为1的串和字符是否相同。

为什么?4- 4串是不定长的,表示串的长度有几种方法? C 语言屮的串采用哪种方法?4- 5可以说串是数据类型固定为字符类型的线性表,但是申操作和线性表操作的主要不 同Z 处在哪里?4- 6可以用几种存储方法存储串?4- 7分别写出串的静态数组存储结构和串的动态数纽存储结构的结构休定义。

4- 8为什么动态数组结构下串的实现要增加撤消函数?(1) Length (SI);(3) Insert (Si, 5, S3);(5) SubString(Sl, 5, 9, T); (7) Replace (SI, 0, S2, S3) (2) Compare(S2, S3); (4) Delete(Sl, 5, 9); (6) Search (SI, 0, S2);(1) Length(SI);(2) Compare(S2, S3);(3)Insert (SI, 5, S3): (4)Delete(Sl, 5, 9);4- 1 设SI = u Data Structure Course w , S2 = u Structure, S3 = “Base”,求:(5) SubString(Sl, 5, 9, T) ;(6) Search (SI, 0, S2);(7) Replace (SI, 0, S2, S3) 4- 2什么叫串?串和字符在存储方法上有什么不同?空串和空格串是否相同,为什么?4- 3串是由字符组成的,长度为1的串和字符是否相同。

为什么?4- 4串是不定长的,表示串的长度有儿种方法? C 语言小的串采用哪种方法?4- 5可以说串是数据类型固定为字符类型的线性表,但是串操作和线性表操作的主要不 同之处在哪里?4- 6可以用儿种存储方法存储串?4- 7分别写出串的静态数纟F1存储结构和串的动态数组存储结构的结构体定义。

4-8为什么动态数组结构下串的实现要增加撤消函数?复杂概念题:4-9 令 tl= "aaab” , t2= “abcabaa” , t3= “abcaabbabcabaacba”,试分别求出他们的 next[j]值。

4-10简述模式匹配的Brutc-Forcc 算法思想。

简述模式匹配的KMP 算法思想。

4-11简述求子串的nextlj]值的算法思想。

4-12设串采用静态数组存储结构,编写函数实现两个串的比较Compare(S, T)。

要求比 较结果有等于和不等于两种情况。

4-13设串采用静态数组存储结构,编写函数实现两个串的比S Compare(S, T)。

要求比 较结果冇大于、等于和小于三种情况。

编写两数实现两个串的比较Compare(S, T)。

要求比储结构和串的动态数组存储结构是否对编写串的比较算法冇影响。

4-15设串采用静态数组存储结构,编写函数实现串的替换Replace(S, start, T, V),即耍 求在主串S 中,从位置start 开始查找是否存在子串T,若主串S 中存在子串T,则用子串V 替换子串T,且函数返回1;若主串S 中不存在子串T,则函数返冋0。

4-16设字符串采用静态数组的顺序存储结构,(1) 编写算法删除字符串s 中值等于ch 的一个字符,并分析该算法的时间复杂度;(2) 编写算法删除字符串s 中值等于ch 的所有字符。

4-17设字符串采用单字符的链式存储结构,编写删除串s 从位置i 开始长度为k 的子串 的算法。

5- 1分别写出一维数组和二维数组的存储映彖公式。

相关文档
最新文档