算法设计期中试卷平时作业参考解答

合集下载

算法设计分析期中试题

算法设计分析期中试题

《算法设计与分析》期中试卷一、叙述分治算法的基本思想及一般算法设计模式;二、叙述动态规划算法的基本步骤及动态规划算法的基本要素;三、改进课本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不----------------------------精品word文档值得下载值得拥有----------------------------------------------再数组中时,返回小于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个数组成的序列的最长单调递增子序列。

算法分析与设计作业参考答案

算法分析与设计作业参考答案

算法分析与设计作业参考答案《算法分析与设计》作业参考答案作业⼀⼀、名词解释:1.递归算法:直接或间接地调⽤⾃⾝的算法称为递归算法。

2.程序:程序是算法⽤某种程序设计语⾔的具体实现。

⼆、简答题:1.算法需要满⾜哪些性质?简述之。

答:算法是若⼲指令的有穷序列,满⾜性质:(1)输⼊:有零个或多个外部量作为算法的输⼊。

(2)输出:算法产⽣⾄少⼀个量作为输出。

(3)确定性:组成算法的每条指令清晰、⽆歧义。

(4)有限性:算法中每条指令的执⾏次数有限,执⾏每条指令的时间也有限。

2.简要分析分治法能解决的问题具有的特征。

答:分析分治法能解决的问题主要具有如下特征:(1)该问题的规模缩⼩到⼀定的程度就可以容易地解决;(2)该问题可以分解为若⼲个规模较⼩的相同问题,即该问题具有最优⼦结构性质;(3)利⽤该问题分解出的⼦问题的解可以合并为该问题的解;(4)该问题所分解出的各个⼦问题是相互独⽴的,即⼦问题之间不包含公共的⼦问题。

3.简要分析在递归算法中消除递归调⽤,将递归算法转化为⾮递归算法的⽅法。

答:将递归算法转化为⾮递归算法的⽅法主要有:(1)采⽤⼀个⽤户定义的栈来模拟系统的递归调⽤⼯作栈。

该⽅法通⽤性强,但本质上还是递归,只不过⼈⼯做了本来由编译器做的事情,优化效果不明显。

(2)⽤递推来实现递归函数。

(3)通过Cooper 变换、反演变换能将⼀些递归转化为尾递归,从⽽迭代求出结果。

后两种⽅法在时空复杂度上均有较⼤改善,但其适⽤范围有限。

三、算法编写及算法应⽤分析题: 1.冒泡排序算法的基本运算如下: for i ←1 to n-1 dofor j ←1 to n-i do if a[j]交换a[j]、a[j+1];分析该算法的时间复杂性。

答:排序算法的基本运算步为元素⽐较,冒泡排序算法的时间复杂性就是求⽐较次数与n 的关系。

(1)设⽐较⼀次花时间1;(2)内循环次数为:n-i 次,(i=1,…n ),花时间为:∑-=-=in j i n 1)(1(3)外循环次数为:n-1,花时间为:2.设计⼀个分治算法计算⼀棵⼆叉树的⾼度。

算法与程序设计期中考试试题

算法与程序设计期中考试试题

算法与程序设计期中考试试题算法与程序设计期中考试试题⼀、选择题:每题2分,30题,共60分()1.以下问题中最适合⽤计算机编程处理的是。

A.制定本学期的学习计划B.计算正⽅形的周长C.创作⼀⾸歌曲D.求1000以内的所有素数()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.程序设计语⾔的发展阶段不包括。

A.⾃然语⾔B.机器语⾔C.汇编语⾔D.⾼级语⾔()8.要使命令按钮显⽰⽂字“确定”,正确的设置是把该命令按钮的。

A.Font属性设置为“确定”B.ForeColor属性设置为“确定”C.Caption属性设置为“确定”D.BorderStyle属性设置为“确定”()10.下⾯的属性中,⽤于设定控件⾼度的是。

A.F ont B.H eight C.Caption D.W idth ()11.窗体的BackColor属性⽤于设置窗体的____。

(p18)A.宽度B.前景⾊C.⾼度D.背景⾊12.在VB中,若要将变量N定义为单精度型数据,则下列表⽰⽅法中正确的是化。

A.Dim N as String B.Dim N as Single C.Dim N as Integer D.Dim N as Long()14.在程序设计的过程中,错误的声明⼀个变量会导致程序不能正常编译。

因此,需要规范合理地声明⼀个变量,下列合法的变量名是。

A.if B.zf3 C.8-a D.a#2()17.某学校打算选拔⾝⾼T超过1.75⽶且体重W不⼤于55公⽄的⼈作为招⽣条件,表⽰该条件的布尔表达式为。

算法设计与分析期中考试试题

算法设计与分析期中考试试题
i S[i] f[i] 1 1 4 2 3 5 3 0 6 4 5 7 5 3 8 6 5 9 7 6 10 8 8 11 9 8 12 10 2 13 11 12 14

二、算法填空 1.最大子段和: 动态规划算法 int MaxSum(int n, int a[])
{ int sum=0, b=0; //sum 存储当前最大的 b[j], b 存储 b[j] {
for(int j=1; j<=n; j++) if (b>0) else if(b>sum) } return sum; } 2.贪心算法求装载问题 template<class Type> b+= a[j] ;
; //一旦某个区段和为负,则从下一个位置累和 ;
void Loading(int x[], Type w[], Type c, int n) { int *t = new int [n+1]; ; for (int i = 1; i <= n; i++) x[i] = 0; for (int i = 1; i <= n && w[t[i]] <= c; i++) {x[t[i]] = 1; ;} } 3.快速排序 template<class Type> void QuickSort (Type a[], int p, int r) { if (p<r) { int q=Partition(a,p,r); ; //对左半段排序 ; //对右半段排序 } }
4. 对于下图使用 Dijkstra 算法求由顶点
求各个顶点对之间的最短路径的算法思想。
期中试题

算法设计期中试卷平时作业参考解答

算法设计期中试卷平时作业参考解答

《算法分析与设计》2021-2021-2学期期中测试(信息安全专业DQ 教学班)姓名:学号:得分:1. 证明()()()()()()()O f n O g n O f n g n +=+。

(10分)证明:对于任意f 1(n ) O (f (n )),存在正常数c 1和自然数n 1,使得对所有n n 1,有f 1(n ) c 1f (n )成立。

类似,对于任意g 1(n )O (g (n )),存在正常数c 2和自然数n 2,使得对所有n n 2,有g 1(n )c 2g (n )成立。

令c 3=max{c 1, c 2},n 3 =max{n 1, n 2},则对所有的nn 3,有f 1(n ) +g 1(n ) c 1f (n ) + c 2g (n )c 3f (n ) + c 3g (n ) = c 3(f (n ) + g (n ))即()()()()()()()O f n O g n O f n g n +=+成立。

2. 将下列5个函数按渐近增加率由低至高进行排序,要求写出比较进程。

(15分)解: 100log 2log log log 24()log 100log ,()2log ,n n n f n n n f n n n +====(1) 2()f n 是对数函数的幂,5()f n 是幂函数,因此()25()()f n O f n =; (2) ()()()491105log limlimlim log n n n f n n nn n f n n →∞→∞→∞===∞,因此()54()()f n O f n =; (3) ()()423log 1limlimlim 0log n n n f n n n f n n n n→∞→∞→∞===,因此()43()()f n O f n =;(4) 对1()f n 和3()f n 取对数,有()()() 13log ()log loglog loglog ,log ()2log loglog log f n n n n n n n f n n n n =+=Θ=Ω=+=Θ,因为()log n O n =,所以()31()()f n O f n =;因此,5个函数按渐近增加率由低至高排序为25431(),(),(),(),()f n f n f n f n f n 。

算法设计参考答案

算法设计参考答案

算法设计参考答案算法设计参考答案在计算机科学领域,算法设计是一门重要的学科,它关注如何设计高效、可靠的算法来解决各种问题。

在实际应用中,算法设计的质量直接影响着计算机系统的性能和用户体验。

本文将探讨一些常见的算法设计问题,并给出参考答案。

一、排序算法排序是算法设计中最基本的问题之一。

在现实生活中,我们经常需要对一组数据进行排序,以便更好地组织和利用这些数据。

以下是两种常见的排序算法及其参考答案:1. 冒泡排序(Bubble Sort)冒泡排序是一种简单但效率较低的排序算法。

它的基本思想是通过相邻元素的比较和交换,将较大的元素逐渐“冒泡”到数组的末尾。

具体实现如下:```pythondef bubble_sort(arr):n = len(arr)for i in range(n - 1):for j in range(n - i - 1):if arr[j] > arr[j + 1]:arr[j], arr[j + 1] = arr[j + 1], arr[j]return arr```2. 快速排序(Quick Sort)快速排序是一种高效的排序算法,它利用了分治的思想。

具体而言,它通过选择一个基准元素,将数组分割为两部分,使得左边的元素都小于基准,右边的元素都大于基准,然后递归地对左右两部分进行排序。

具体实现如下:```pythondef quick_sort(arr):if len(arr) <= 1:return arrpivot = arr[len(arr) // 2]left = [x for x in arr if x < pivot]middle = [x for x in arr if x == pivot]right = [x for x in arr if x > pivot]return quick_sort(left) + middle + quick_sort(right)```二、图算法图是一种常见的数据结构,用于表示各种实际问题的关系和连接。

数据结构与算法期中考试卷(含答案)

数据结构与算法期中考试卷(含答案)

数据结构与算法期中考试卷(含答案)⽟林师范学院期中课程考试试卷(2010——2011学年度第⼀学期)命题教师:刘恒命题教师所在系:数计系课程名称:数据结构与算法考试专业:信计考试年级:09级⼀、单项选择题(每题2分,共30分,把正确答案填⼊表格中) 1、在数据结构中,从逻辑上可以把数据结构分成( C )。

A 、动态结构和静态结构B 、紧凑结构和⾮紧凑结构C 、线性结构和⾮线性结构D 、逻辑结构和存储结构 2、结构中的数据元素之间存在⼀个对多个的关系,称为(B )结构。

A 、线性 B 、树形 C 、图状 D 、⽹状 3、以下关于线性表的说法不正确的是(C )。

A 、线性表中的数据元素可以是数字、字符、记录等不同类型。

B 、线性表中包含的数据元素个数不是任意的。

C 、线性表中的每个结点都有且只有⼀个直接前驱和直接后继。

D 、存在这样的线性表:表中各结点都没有直接前驱和直接后继。

4、关于单链表的说法,请选出不正确的⼀项( C)。

A 、逻辑相邻、物理不⼀定相邻B 、不能随机存取C 、插⼊与删除需移动⼤量元素D 、表容量易于扩充 5、关于顺序表的说法,请选出不正确的⼀项(D )。

A 、逻辑相邻、物理相邻 B 、可实现随机存取 C 、存储空间使⽤紧凑 D 、表容量易于扩充6、设N 为正整数,试确定下列程序段中前置以记号@语句的频度为(A )。

x=91;y=100;while(y>0){@if(x>100){x-=10;y--;} else x++; } A 、1100 B 、 9100 C 、110 D 、 9107、在顺序表中删除⼀个元素,平均需要移动( C)元素,设表长为n 。

A、n/2-1 B 、n/2+1C 、n/2D 、(n+1)/28、对单链表执⾏下列程序段,请选出正确的⼀项( A)。

T=P;While(T->next!=NULL ){T —>data=T —>data*2;T=T —>next;} A 、R->data=4 B 、R->data=8C 、H->data=4D 、Q->data=79、若⼀个栈的输⼊序列是1,2,3,┅,n ,输出序列的第⼀个元素是n,则第k 个输出元素是( C)。

算法设计分析期中试题.pdf

算法设计分析期中试题.pdf

算法设计分析期中试题.pdf《算法设计与分析》期中试卷一、叙述分治算法的基本思想及一般算法设计模式;二、叙述动态规划算法的基本步骤及动态规划算法的基本要素;三、改进课本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。

中南大学算法分析与设计期中测试2011答案

中南大学算法分析与设计期中测试2011答案

测试题1. 简述下列策略的基本思想 (15) (1) 分治将输入规模为n 的问题分成k (一般取k=2)个子问题,子问题相互独立,与原问题性质相同。

先分别对k 个子问题求解,再将子问题的解合并成原问题的解。

由于子问题还很大,故采用递归技术对子问题不断分割,直至子问题可直接简单地解出。

(2) 贪心贪心法希望从求局部最优达到全局最优,即依据贪心策略逐步构造最优解。

即先按确定贪心策略,将输入量排序。

再依次做出当前最优的选择,即当前输入可以构成合法的部分解,则将此输入量选入。

决策一旦做出,就不可再更改。

(3) 动态规划动态规划也是将问题求解过程分成k 个阶段(划分子问题),逐步决策的方法。

与贪心法不同的是,动态规划采用划分子问题,自底向上规划的方法。

要求子问题的划分具备最优子结构性质,即“最优化原理”成立。

需列出当前决策对前阶段决策状态的依赖关系(贝尔曼方程),求出各子问题的最优解,并将子问题的最优解代到下一步的决策中,逐步规划,解出原问题的解。

贝尔曼方程:⎪⎩⎪⎨⎧+==≠}.{min ,0ij i j i j s w u u u2. 下列数组4,1,3,2,16,9,10,14,8,7构成一个堆吗?如果不是,请用自底向上算法建一个 a max-heap.(10) 1) 不是一个最大堆2)按照算法,从i=n/2-5处开始测试i=5 它的孩子节点 2*i=10 ,满足最大堆的规定i=4 ,2i=8,2i+1=9 不满足,整理如下:i=3 ,2i=6,2i+1=7 不满足,整理如下:i=2 ,2i=4,2i+1=5不满足,整理如下:i=1 ,2i=2,2i+1=3不满足,依次整理如下:3. 针对下列叙述,根据正确或错误,选择T或F,并简要说明卫生么.(30)(1) T F nlogn=O(n3) 是上界(2) T F根据master定理, 递归方程T(n)=3T(n/3)+n 的解是T(n)=Θ(n)正确答案:T(n)=O(nlogn)(3)T F 最坏情况下, 归并排序的时间渐进阶是O(n2).归并排序最坏情况下的时间是:T(n)=O(nlogn)(4)T F 图的深度优先搜索的时间是O(n+|E|)。

最新湖南大学算法设计与分析期中试题(及答案)

最新湖南大学算法设计与分析期中试题(及答案)

一、函数渐进阶。

对于下列各组f(x)和g(x),确定他们的关系(15分)a)f(x)=log n10+1;g(x)= log n – 10b)f(x)=5 n10;g(x)=10nc)f(x)=;g(x)= log n +5二、设n个不同的整数排好序后存于T[0:n-1]中。

若存在下标i,0≤i<n,使得T[i]=i,试设计一个时间复杂度为O(logn)的算法找到该下标(15分),并用C/C++编程实现(10分)。

三、分别用贪心算法(20分)、动态规划法(20分)设计求解0-1背包问题的算法。

要求:1.说明算法策略(每种方法5分);2.主要算法步骤(10分);3.分析算法的时间复杂度(5分)四、试设计解决TSP问题的贪心算法(10分),分析时间复杂度(5分),试分析是否存在O(n2log n)的有效算法(5分)。

1函数渐进阶。

对于下列各组f(x)和g(x),确定他们的关系(15分)a)f(x)=log n10+1;g(x)= log n – 10b)f(x)=5 n10;g(x)=10nc)f(x)=;g(x)= log n +52设n个不同的整数排好序后存于T[0:n-1]中。

若下标i,0≤i<n,使得T[i]=i,试设计一个时间复杂度为O(logn)的存在算法找到该下标(15分),并用C/C++编程实现(10分)。

解答:由题可知,数组T[ ]是排列好的整数集。

可以用二分搜索的算法对问题进行操作。

取中间值T[mid],如果T[mid]=mid则可以返回mid;如果T[mid]<mid在mid+1到n-1之间进行上述操作;如果T[mid]>mid在0到mid-1之间进行上述操作。

Int Findi(int T[],int m,int n){Int mid=(m+n)/2;If (T[mid]==mid) return mid;else if(T[mid]>mid) return Findi(T[],m,mid-1);else return Findi(T[],mid+1,n);}算法设计:输入:一个数组T[ ],起始地址m,末端地址n比较指定数组位置的中间元素T[(m+n)/2]与中间地址(m+n)/2.1)如果T[(m+n)/2]等于(m+n)/2,则返回(m+n)/2;2)如果T[(m+n)/2]大于(m+n)/2,则返回在数组T[ ]中m位到(m+n)/2-1之间进行此算法的返回值;3)如果T[(m+n)/2]小于(m+n)/2,则返回在数组T[ ]中(m+n)/2+1到n之间进行此算法的返回值;输出:一个值,若存在则返回i;若不存在则返回0.3分别用贪心算法(20分)、动态规划法(20分)设计求解0-1背包问题的算法。

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

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

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

算法考试试题及答案

算法考试试题及答案

精品文档一、填空题(本题10 分,每空 1 分)1、算法的复杂性是的度量,是评价算法优劣的重要依据。

2、设 n 为正整数,利用大“O(·)”记号,将下列程序段的执行时间表示为n 的函数,则下面程序段的时间复杂度为。

i=1; k=0;while(i<n) { k=k+10*i;i++; }3、计算机的资源最重要的是和资源。

因而,算法的复杂性有和之分。

n24、 f(n)= 6 ×2+n,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) 的阶。

算法设计期中试卷

算法设计期中试卷

选择题:(每题2分,共30分)1.衡量一个算法好坏的标准是( C )。

A.运行速度快B.占用空间少C.时间复杂度低D.代码短2.当输入规模为n时,算法增长率最快的是( C )。

A.12nB. 100log2nC.2n2D.3nlog3n3.渐进算法分析是指( B )。

A.算法在最好情况、最坏情况和平均情况下的代价B.当规模逐步往极限方向增大时,对算法资源开销“增长率”上的简化分析C.数据结构所占用的空间D.在最小输入规模下算法的资源代价4.当上下限表达式相等时,我们使用下列( C )来描述算法代价?A.大O 表示法B.大Ω表示法C.θ表示法D.小o表示法5.二分搜索算法是利用( A )实现的算法。

A.分治策略B.动态规划法C.贪心法D.回溯法6.下列不是动态规划算法基本步骤的是( A )。

A.找出最优解的性质B.构造最优解C.算出最优解D.定义最优解7.动态规划算法的基本要素为( C )。

A. 最优子结构性质与贪心选择性质B.重叠子问题性质与贪心选择性质C.最优子结构性质与重叠子问题性质D. 预排序与递归调用8.能采用贪心算法求最优解的问题,一般具有的重要性质为( A )。

A. 最优子结构性质与贪心选择性质B.重叠子问题性质与贪心选择性质C.最优子结构性质与重叠子问题性质D. 预排序与递归调用9.备忘录方法是那种算法的变形。

( B )。

A.分治法 B.动态规划法 C.贪心法 D.回溯法10.实现大整数乘法利用的算法是( A )。

A.分治策略B.动态规划法C.贪心法D.回溯法11.使用分治法求解不需要满足的条件是( A )。

A. 子问题必须是一样的B. 子问题不能够重复C. 子问题的解可以合并D. 原问题和子问题使用相同的方法解12.贪心算法与动态规划算法的主要区别是( B )。

A.最优子结构B.贪心选择性质C.构造最优解D.定义最优解13.实现最长公共子序列利用的算法是( B )。

A.分治策略B.动态规划法C.贪心法D.回溯法14.使用二分搜索算法在1000个有序元素表中搜索一个特定元素,在最坏情况下,搜索总共需要比较的次数是( A )。

浙师大附中高二期中测试-算法专题(答案及解析)

浙师大附中高二期中测试-算法专题(答案及解析)

浙师大附中2019学年第一学期期中教学质量检测第一部分信息技术(共50分)一、选择题(本大题共15小题,每小题2分,共30分。

每小题列出的四个备选项中只有一个是符合题目要求的,不选、多选、错选均不得分)1.【答案】B【解析】本题主要考察了对vb对象、方法、事件的了解。

在学习中应结合具体案例进行理解。

截图中AddItem、Clear同属于对象List1的方法,故B正确。

2.【答案】C【解析】本题考查VB对象属性格式,引用对象属性的格式为:对象名称.属性名称,Text控件文本属性为text。

3.【答案】D【解析】本题考查事件过程的格式,应通过上机实践加深理解,熟练使用。

根据VB中事件过程的一般格式可知,该过程的过程名为“Obj_Click”;该对象的对象名为“Obj”;“Sub”是过程语句组成部分,不是该对象的类名。

4. 【答案】D【解析】本题主要考查VB程序的基本运算与表达式,Mid(″123456″,6,1) =″6″。

5. 【答案】D【解析】本题主要考查VB语言的基本运算式与基本语句,数学表达式在VB程序设计中应该表示为(-b+sqr(b*b-4*a*c))/2/a ,故D正确。

6. 【答案】D【解析】文本框Text1的text属性值为“H”。

选项B不是赋值语句,通过赋值语句“Label1.caption="input" ”可把Label1中的文字改为“input”。

运行期间,命令按钮Command1的Caption属性值可以修改。

7.【答案】D【解析】本题主要考查的是算法的流程图,分析流程图、执行流程图,并对流程图进行分析,掌握流程图8.【答案】D【解析】本题考查数组的定义,下标越界就是针对数组变量的使用。

而a(1 To 5)只定义了a(1)~ a(5)。

11.【答案】D【解析】本题主要考查的是VB程序的相关知识,熟悉VB程序的代码是解题的关键。

阅读程序,分析得出,该段代码能实现的功能是:求100—999之间的两个连续奇数之和能被7整除的奇数对的个数,故D正确。

算法与分析平时作业---答案

算法与分析平时作业---答案

平时作业1、给定下述二分搜索算法,请判断算法的正确性,指出错误算法的产生原因。

a) int BinarySearch(Type a[], const Type& x, int l, int r){while (r >= l){int m = (l+r)/2;if (x == a[m]) return m;if (x < a[m]) r = m-1;else l = m+1;}return -1;}答:正确b) int BinarySearch(Type a[], const Type& x, int l, int r){while (r >= l){int m = (l+r)/2;if (x == a[m]) return m;if (x < a[m]) r = m+1;else l = m-1;}return -1;}答:错误if (x < a[m]) r = m+1; 当查找的元素在中间元素的左边时,右指针应该为m-1位置,修改成if (x < a[m]) r = m+1; else l = m+lc) int BinarySearch(Type a[], const Type& x, int l, int r){while (r > l){int m = (l+r)/2;if (x == a[m]) return m;if (x < a[m]) r = m-1;else l = m+1;}return -1;}答:错误。

while (r > l) 要考虑到 数组只有一个元素的情况 所以应该是 r>=l ;2、O(1)空间子数组环卫算法:设a[0:n-1]是一个n 维数组,k (1≤ k ≤n-1)是一个非负整数。

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

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

算法设计与分析期中笔试题(2015)(答案)

算法设计与分析期中笔试题(2015)(答案)

…,
rn 是给定正整数,试
给出一个购买许可证的顺序,以使得花费的总钱数最少. 设计一个算法
求解这个问题,说明设计思想,证明其正确性并分析算法最坏情况下的
时间复杂度.
答案
排序 ri 为递减次序,使得 r1 r2 … rn,依次购买. 设最优解为 OPT(I),假设在 OPT(I)存在逆序,即 rj < ri,但是 j 在 i 前面购买. 一定有相邻的逆序, 即存在 i 和 j, 使得 j 在 i 前面与 i
4/8
得分
五、(15 分)在一组服务器S = {������1, ������2, … , ������������}上放置文件副本, 如果 副本放置在������������上, 则产生������������(正的整数值)的存储代价. 当在������������上发生对 该文件的访问时, 如果文件副本在������������上, 则无访问代价; 如果不在������������上,
至多可得到一个软件许可证. 每个许可证当前售价都是 1000 元,但是第
i 个许可证的售价将按照 ri >1 的指数因子增长,i=1,2,…,n. 例如,
第 i 个许可证的售价在 1 个月后将是 ri 1000 元,2 个月后将是 ri21000
元,k
个月后将是
rk i
1000
元.
假设
r1,
r2,
出求解过程.
������(������)
=
4������
������ (2)
+
������2
log ������ ������
������(1) = 1
解答:
������(������) = ������(������2 log������+1������ )

算法设计与分析:期中试卷+实验题目文字解析

算法设计与分析:期中试卷+实验题目文字解析

算法设计与分析:期中试卷+实验题目文字解析期中试卷:算法设计与分析实验题目简单解析:P39-P43:2-1众数问题;2-7集合划分问题;2-10标准二维表问题;2-11整数因子分解问题P79-P80:3-1独立任务最有调度;3-2编辑距离问题;3-3石子合并问题;3-4数字三角形问题P109:4-2最优合并问题;4-4 磁盘文件最优存储问题P151-P152:5-1子集和问题;5-3最小重量机器设计问题2-1众数问题给定含有n个元素的多重集合S,每个元素在S中出现的次数称为该元素的重数。

多重集S 中重数最大的元素称为众数。

例如,S={1,2,2,2,3,5}。

多重集S的众数是2,其重数为3。

数据输入输入包括多组数据,请处理到EOF结束。

每组数据,以一个n(1<=n<=100,000)开始,接下n 行,每行有一个数字(-231~231)。

数据输出对于每组输入数据,输出一行一个数字,表示众数。

如果存在多个解,只需输出值最小的众数即可。

算法思路:首先用快速排序算法排序数组,找到当前数组的中位数及其位置,然后把在数组中与中位数相同的数字向它靠拢,就可以统计中位数的个数。

现在数组已经被中间这些相等的数字分开了。

那么递归条件就有了。

如果中位数的个数比它左边这段短,那么说明左边有可能找到更多的,所以递归继续。

反之,如果左边这段数的长度比较短,那么就没必要继续递归。

对右边那段数据使用同样的策略。

2-7集合划分问题n个元素的集合{1,2,.,n }可以划分为若干个非空子集。

例如,当n=4 时,集合{1,2,3,4}可以划分为15个不同的非空子集如下:{1},{2},{3},{4}},{{1,2},{3},{4}},{{1,3},{2},{4}},{{1,4},{2},{3}},{{2,3},{1},{4}},{{2,4},{1},{3}},{{3,4},{1},{2}},{{1,2},{3,4}},{{1,3},{2,4}},{{1,4},{2,3}},{{1,2,3},{4}},{{1,2,4},{3}},{{1,3,4},{2}},{{2,3,4},{1}},{{1,2,3,4}}编程任务:给定正整数n 和m,计算出n 个元素的集合{1,2,., n }可以划分为多少个不同的由m 个非空子集组成的集合。

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

《算法分析与设计》2012-2013-2学期期中测试(信息安全专业DQ 教学班)姓名: 学号: 得分:1. 证明()()()()()()()O f n O g n O f n g n +=+。

(10分)证明:对于任意f 1(n ) ∈ O (f (n )),存在正常数c 1和自然数n 1,使得对所有n ≥ n 1,有f 1(n ) ≤ c 1f (n )成立。

类似,对于任意g 1(n ) ∈ O (g (n )),存在正常数c 2和自然数n 2,使得对所有n ≥ n 2,有g 1(n ) ≤ c 2g (n )成立。

令c 3 = max{c 1, c 2},n 3 = max{n 1, n 2},则对所有的n ≥ n 3,有 f 1(n ) +g 1(n ) ≤ c 1f (n ) + c 2g (n ) ≤ c 3f (n ) + c 3g (n ) = c 3(f (n ) + g (n ))即()()()()()()()O f n O g n O f n g n +=+成立。

2. 将下列5个函数按渐近增长率由低至高进行排序,要求写出比较过程。

(15分)100log 2log loglog 12345()(log ),()log ,()log ,()2,()n n n n f n n n f n n f n n n f n f n +=====解: 100log 2log log log 24()log 100log ,()2log ,n n n f n n n f n n n +====(1) 2()f n 是对数函数的幂,5()f n 是幂函数,因此()25()()f n O f n =; (2) ()()()491105log limlimlim log n n n f n n nn n f n n →∞→∞→∞===∞,因此()54()()f n O f n =; (3) ()()423log 1limlimlim 0log n n n f n n n f n n n n→∞→∞→∞===,因此()43()()f n O f n =;(4) 对1()f n 和3()f n 取对数,有()()() 13log ()log loglog loglog ,log ()2log loglog log f n n n n n n n f n n n n =+=Θ=Ω=+=Θ,因为()log n O n =,所以()31()()f n O f n =;因此,5个函数按渐近增长率由低至高排序为25431(),(),(),(),()f n f n f n f n f n 。

3. 给定按升序排列的n 个不同整数存于数组a [1:n ]中,请设计()log O n 的算法找到下标i ,1i n ≤≤,使得a [i ] = i ,如不存在这样的下标,则返回0。

(15分) 解:令head = 1, rear = n .(1) 当head <= rear 时,令mid = ⌊(head + rear)/2⌋; (2) 如果a [mid] = mid ,返回mid 值,结束。

如果a [mid] > mid ,令rear = mid – 1,返回(1)继续执行; 如果a [mid] < mid ,令head = mid + 1,返回(1) 继续执行; (3)返回0值,结束。

public static int Search(int [] a, int n) {. <= a[n -1] 中搜索 a[i] = i利用主方法给出下列递归式的渐近界,并用数学归纳法证明式(2)的渐近界。

(20分)(1) ()()42T n T n n =+, (2) ()()242T n T n n =+, (3) ()()342T n T n n =+解:(1) 24,2,log log 42,b a b a ==== ()()2, if 0.5,f n n O n εε-===因此,()()2T n n =Θ. (2) 24,2,log log 42,b a b a ==== ()()22,f n n n ==Θ因此,()()2log T n n n =Θ.(3) 24,2,log log 42,b a b a ==== ()()32, if 0.5,f n n n εε+==Ω=而且()()()333424234,f n n n n cf n ==≤=其中34n =,因此,()()3T n n =Θ.证明:假设当k n <时,()2log T k ck k ≤,其中c 为常数。

()()()()()()2222222242 42log 2 log 1 log 1 log if 1T n T n n c n n n cn n n cn n c n cn n c =+≤+=-+=--≤≥因此,命题得证。

5. 利用直接展开法求解下列递归式的渐近界。

(20分)(1) ()()242T n T n n =+, (2) ()T n n =+解:(1)()()()()()()()()()()()()22222222232423322log log 2222424422422442224234242log 1log log k k n n T n T n n T n n n T n n T n n n T n n T n kn T n n n n T n n O n n =+=++=+=++=+==+==+=+=12n某超市中有i i个容量为C的购物车,你可以在这n种商品中选一些放入你的购物车中免费带走。

但是要求所选的商品重量之和不能大于购物车容量C,而且超市中每种商品每人最多选两件。

请问在这种情况下你如何选择商品使得你能带走的免费商品的价格达到最大?(20分)(a) 为该问题设计一个动态规划算法,要求写出分析过程和递归式。

(b) 若该超市共有3种商品搞活动,商品的价值依次为v = (25, 30, 15),商品的重量依次为w = (2, 3, 1),购物车容量为C = 5。

运用自底而上的方法求解上述问题,要求画出表格,并给出最优解与最优值!解:方法1✧将n种商品全部复制一份得到2n种商品,这样每种商品最多只能选择1件。

✧定义m(i, j)为购物车容量为j,由第1, …, i种商品装入购物车的最优值。

✧Case 1: 不选择第i种商品➢则m(i, j)为当重量限制为j时,{1, …,i – 1}种商品装入购物车所产生的最大价值✧Case 2: 选择第i种商品.➢新的重量限制为j – w i➢m(i, j – w i) 为新重量限制下,{1, …, i – 1}种商品装入购物车所产生的最大价值因此,递归式如下:()()()(){}0if 0 or 0,1,if max 1,,1,otherwisei i i i j m i j m i j w jm i j v m i j w ⎧==⎪⎪=->⎨⎪-+--⎪⎩最优解:选择商品1,1’,3, 即选择两个商品1, 一个商品3 最优值 = 25+25+15=65方法2✧ 定义m (i , j )为购物车容量为j ,由第1, …, i 种商品装入购物车的最优值。

✧ Case 1: 不选择第i 种商品➢ 则m (i , j )为当重量限制为j 时,{1, …,i – 1}种商品装入购物车所产生的最大价值✧ Case 2: 仅选择1格第i 种商品.➢ 新的重量限制为 j – w i➢ m (i , j – w i ) 为新重量限制下,{1, …, i – 1}种商品装入购物车所产生的最大价值✧ Case 3: 选择两个第i 种商品➢ 新的重量限制为 j – 2w i➢ m (i , j – 2w i ) 为新重量限制下,{1, …,i – 1}种商品装入购物车所产生的最大价值因此,递归式如下:()()()(){}()()()0if 0 or 01,if max 1,,1,if <2,1,,1,,max if 221,2i i i i i i i ii i i j m i jj w m i j v m i j w w j w m i j m i j v m i j w j w v m i j w ==⎧⎪-<⎪⎪-+--<=⎨⎪⎧⎫-+--⎪⎪⎪>⎨⎬⎪+--⎪⎪⎩⎭⎩最优解:选择两个商品1, 一个商品3 最优值 = 25+25+15=65第2章作业:算法分析基础 1. 算法与程序的区别(1).算法特性之一是有穷性,程序不一定满足有穷性。

(2). 计算机程序是用来给计算机读的,而算法是给人来读的,直接将算法输入计算机是不能运行的。

(3).算法是解决问题的一种方法或一个过程,而程序则是算法用某种程序设计语言的具体实现。

2. 将下列函数按渐进增长率由低到高排列出来。

()()()()()()24/3log 2log 123456,,(log ),2,,nn nn f n f n n f n f n n n f n f n n ======令log m n =,则有()()()()()()()()()1113344266log ,2log log ,3log log log ,log ,g n f n m g n f n m g n f n m m m m n g n f n m ======+=Θ==显然上述4个函数的渐近增长率排序为()()()()3146g n g n g n g n ≤≤≤;()()()()()()22255266log log ,log 2,log log ,n g n f n n n g n f n g n f n n ======显然上述3个函数的渐近增长率排序为()()()625g n g n g n ≤≤;因此,原函数的渐近增长率排序为()()()()()()314625f n f n f n f n f n f n ≤≤≤≤≤。

3. 已知()()()g n O f n =,证明()()()()f n g n O f n +=。

证明:因为()()()g n O f n =,存在正常数c 0和自然数n 0,使得对所有n ≥ n 0,有()()0g n c f n ≤成立。

令c 1 = c 0 + 1,则对所有的n ≥ n 0,有 f (n ) +g (n ) ≤ f (n ) + c 0f (n ) ≤ (1 + c 0)f (n ) = c 1f (n )即()()()()f n g n O f n +=成立。

第3章作业:分治递归1.画出T(n)=2T(n/2)+1的递归树,并给出其解的渐进界。

相关文档
最新文档