算法复习试题.doc

合集下载

专业算法复习题一.docx

专业算法复习题一.docx
解:#include<stdio.h>
int main()
{
int i,aver,a[10],sum=0,n=0;
for(i=l;i<10;i++)
scanff%d”,&a[i]);
ifi[a[i]>0&&a[i]%2==0)
{
sum=sum+a[i];
n++;
}
avcr=sum/n;
printf(,'aver=%d\n",aver);
A.1个B.2个
C.4个D.8个
5.下列表达式屮运算结果为3的表达式是(B)
A.(-7)%4B.7/4+2
C.7/4*4-4D.8/3+8/3
6.设有int a=3,b=-4, c=5;表达式a4"+・c+b++的值是(C )
A.・6B.・5
C・-4D.・3
7.在printf语句屮,格式说明符u表示(C)
专业算法复习题一
—S
在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的
括号内。错选.多选或未选均无分。
6•下面转义字符屮,表示字符串结束的是(C)
B.\ n
DAf
7.在VC屮,若定义unsigned int a;则变最a在内存屮分配的字节数是(C)
A」个B.2个
C.4个D.8个
9.关于switch屮的表达式,正确的说法是(D)
A.它必须是算术表达式B.它必须是关系表达式
C.它必须是逻辑表达式D.它可以是任意类型的表达式
10.对do语句while(表达式);结构的循环,下列说法正确的是(B)

算法考试试题及答案

算法考试试题及答案

一、选择题(每题2分,共20分)1. 下列哪种排序算法的平均时间复杂度是O(nlogn)?A. 冒泡排序B. 选择排序C. 快速排序D. 插入排序答案:C2. 一个栈的初始状态为空,若依次插入元素1、2、3、4、5,再依次删除元素,删除的顺序是?A. 54321B. 12345C. 54321D. 54312答案:A3. 下列哪种数据结构适用于频繁插入和删除操作?A. 队列B. 栈C. 链表D. 树答案:C4. 在二分查找算法中,查找成功的时间复杂度是?A. O(1)B. O(logn)C. O(n)D. O(nlogn)答案:B5. 下列哪种算法在最坏情况下仍能保证线性时间复杂度?A. 冒泡排序B. 快速排序C. 归并排序D. 插入排序答案:C6. 下列哪种排序算法的空间复杂度最小?A. 冒泡排序B. 快速排序C. 归并排序D. 插入排序答案:A7. 在一个单链表中,删除一个节点需要?A. O(1)时间B. O(n)时间C. O(logn)时间D. O(1)空间答案:B8. 下列哪种数据结构适合实现优先队列?A. 队列B. 栈C. 链表D. 优先队列答案:D9. 在二叉树中,查找某个节点的平均时间复杂度是?A. O(1)B. O(logn)C. O(n)D. O(nlogn)答案:B10. 下列哪种排序算法的空间复杂度最大?A. 冒泡排序B. 快速排序C. 归并排序D. 插入排序答案:C二、填空题(每题2分,共20分)1. 线性表的顺序存储结构中,元素a[i]的存储位置是______。

答案:a[(i-1)n+k],其中n为线性表的长度,k为元素a[i]相对于首元素的偏移量。

2. 栈的顺序存储结构中,出栈操作的时间复杂度是______。

答案:O(1)3. 链表的优点是______。

答案:节省内存空间,便于插入和删除操作。

4. 二分查找算法的前提条件是______。

答案:数据有序。

5. 快速排序算法中,基准元素的选取方法有多种,常用的有______。

算法分析复习题目及答案.

算法分析复习题目及答案.

一、选择题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 )。

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

初级算法考试试题及答案

初级算法考试试题及答案

初级算法考试试题及答案 一、选择题(每题2分,共10分) 1. 以下哪个选项是二分查找算法的时间复杂度? A. O(n) B. O(n^2) C. O(log n) D. O(n log n) 答案:C

2. 在排序算法中,哪种算法的平均时间复杂度是O(n log n)? A. 冒泡排序 B. 快速排序 C. 插入排序 D. 选择排序 答案:B

3. 递归算法中,递归的终止条件是什么? A. 递归调用 B. 递归函数 C. 递归调用的返回值 D. 递归调用的基底情况 答案:D

4. 以下哪个数据结构不是线性结构? A. 数组 B. 链表 C. 树 D. 图 答案:D 5. 哈希表解决冲突的方法不包括以下哪项? A. 分离链接法 B. 线性探测法 C. 二次探测法 D. 排序法 答案:D

二、填空题(每空1分,共10分) 1. 在计算机科学中,算法的时间复杂度通常用大O符号表示,其中O(1)表示_______。 答案:常数时间复杂度

2. 动态规划算法的核心是_______。 答案:最优子结构和过度状态

3. 栈是一种后进先出(LIFO)的数据结构,其主要操作包括_______和_______。 答案:入栈、出栈

4. 归并排序算法的时间复杂度是_______。 答案:O(n log n)

5. 在图的遍历中,深度优先搜索(DFS)和广度优先搜索(BFS)是两种常用的遍历方法,其中BFS使用的辅助数据结构是_______。 答案:队列

三、简答题(每题5分,共20分) 1. 请简述贪心算法的基本思想。 答案:贪心算法的基本思想是在每一步选择中都采取在当前状态下最好或最优的选择,从而希望导致结果是全局最好或最优的算法。 2. 什么是分治算法?请举例说明。 答案:分治算法是一种递归算法,它将一个复杂的问题分解成两个或多个相同或相似的子问题,递归解决这些子问题,然后合并子问题的解以解决原始问题。例如,归并排序就是分治算法的一个典型应用。

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

算法复习试题(仅供参考)2009 一、 填空题(每空1分,共15分) 1、 一个正确的算法应当具有五个特性:(有穷性)、(确定性)、(能行性)、输入和输出。

2、 算法的时间复杂性是算法运行所需要的(计算机资源 )的这个:W:只依赖于

(求解问题的规模)、(具体的输入数据)和( 算法本身的设计〉。 3、 函数的渐进表达式为(T(N) ),函数

错误!未找到引用源。的渐进表达式为( 3n 错

误!未找到引用源。)。 4、 快速排序和归并排序策略上是相同的,都是用的(递归与分治 )算法。

5、 对于问题Q,若满足(Q是NP困难的)、( Q^NP)则称Q为NP完全的。

6、 要求出一个问题所有的可行解,一

般要用( 回溯 )算法。

7、 通常能用动态规划法求解的问题应具备(最优子结构)和(或者是重叠字问题)相

似)的性质。

二、 选择题(每小题2分,共10分) 概率算法是一种非确定性地选择下一计算步骤的方法,()算法主要目的 是消除算法所需计算时间对输入实例的依赖。 A. 数值概率算法 B.蒙特卡

罗算法 C.拉斯维加斯算法 D.舍伍得算法

ASCII码压缩方法经过两级压缩之后可以减少(

A. 62.5% B. 56.25% C. 50%

P类问题与NP类问题的关系是( )

A.包含于 B.包含 C.属于

以下关于判定问题难易处理的叙述中正确的是( )。 A. 付以由多项式时间算法求解的问题是难处理的

B. 需要超过多项式时间算法求解的问题是易处理的

C. 可以由多项式时间算法求解的问题是易处理的

(D ) 1、

(B) 2、

(A) 3、

(C ) 4、

(C ) 5、

)的存储空问。 D. 65%

D.等于

A. 2n+1-l C. n! D. 2n D. 耑要超过多项式时间算法求解的问题是不能处理的

对于含有n个元素的排列树问题,最坏情况下计算时间复杂性为( )。三、计算题(每小题5分,共20分) (注意:要求写出计算过程) 1、 设某算法的时间复杂度为O(i?)。在某台计算机上实现并完成该算法的时间为t秒。现有另外一 台

计算机,其运行速度为第一台的64倍,那么在这台新机器上用同一算法在t秒内能解输入规模多 大的问题? 解:设在本台计算机上的速度为V,设在另一台计算机上的输入规模为X 由计算时间都为t秒有 n3/.V=X3/64V可以求得X=4n

2、 按照渐近阶从低到高的顺序排列下列表达式:4n2, logn, 3n, n!, n273 解:由低到高为:n2 3 log n 4n2 3n n!

3、 求解递归方程T(1) = 1

2

⑻= 2r("/3) + "2

解:D(n)=n2 且 a=2 D(3)=32=9 a

所以 T(n)= O (n2)

4、 设MC(x)是解某个判定问题的蒙特卡罗算法,且是一个p正确的偏真算法。现有如下算法MC2(x), 试分析该算法的正确率。 bool MC2(x){ if(MC(x)) return true; else return MC(x);

} 解:蒙特卡罗算法的特点是只要有一次调用为真,结果就为真,所以该算法的正确率为:1- (1-p)N N为调

用的次数

四、问答及求解题(每小题10分,共40分) 1、什么是贪心选择性质?(2分)贪心算法与动态规划算法有什么共同点?(4分)又有什么区别? (4分)

答:所谓贪心选择性质是指所求问题的整体S优解可以通过一系列局部S优解的选择,即贪心选择 来达到。 共同点:都需要将M题划分为一个个子H题,然后通过解决这些子W题來解决最终闷题。 区别:①动态规划每步所作岀的选择依赖于相关子问题的解,因而只有在解出相关子问题之后才能 做出选择,而在贪心算法中,仅在当前状态下做出最好选择,所做的贪心选择可以依赖于以往所做 过的选择,但决不依赖于将来所做的选择,也不依懒于子问题的解。②动态规划以自底向上的方式 解各子问题,而贪心算法则以自顶向下的方式进行,以迭代的方式做出相继的选择,而且每一步之 后将所求H题简化为规模更小的子闷题。2、设有11=2<个运动贝要进行循环赛,现设计一个满足以下要求的比赛口程表:

①每个选手必须与其他n-1名选手比赛各一次;②每个选手一天至多只能赛一次; ③循环赛要在最短时间内完成。 (1)如果n=2k,循环赛最少需要进行(n-1 )天;(2分)

如果n关2k,循环赛最少需要进行(n )天。(2分)

(2)当n=23=8时,请画出循环赛日程表:(6分)

选手 第1天 第2天 第3天 第4天 第5天 第6天 第7天 1 2 3 4 5 6 7 8 2 1 4 3 6 5 8 7

3 4 1 2 7 8 5 6

4 3 2 1 8 7 6 5

5 6 7 8 1 2 3 4 6 5 8 7 2 1 4 3 7 8 5 6 3 4 1 2

8 7 6 5 4 3 2 1 3、在字符串匹配巾,模式串为“acacdacb”,若采川KMP算法,①求NEXT值;(8分)②若某趟 不

匹配的情形如下所示,贝11指针i, j如何移动? (2分) 1 正文:".b c a c a c b a b a a b a a … 模式: acacdacb

解:① 參 J 1 2 3 4 5 6 7 8

模式串 a C a c d a c b

NEXT[jl 0 1 1 2 3 1 2 3

②指针i不动,指针j退回到NEXTfjl的位置,这里退回到3的位置,即模式向右移动3个位貫 4、有字符串acbcbacbcacbc,若采用LZW算法压缩,得到的压缩码是什么?(2分)要求写出 字典。(8分) 解:压缩码为:{1, 3, 2,5, 4,6, 8}字典如下:: 原字符串 压缩码 序号 a a 1 b b 2 c c 3 ac lc 4 cb 3b 5 be 2c 6

eba 5a 7 acb 4b 8

bca 6a 9 acbc 8c 10

五、算法设计题(15分) 在8X8的国际象棋棋盘上,只摆5个皇后,每个皇后能控制它所在的行、列和通过它所在的正方形 的两条对角线,要使这5个皇后能够控制机盘上的每一个格子(控制的格子可以重复),但皇后之间 不能互相攻击。下面是一种可能的摆法。请设计一个算法,求出所有可能的摆放。请用自然语言描 述你的思路,再写伪代码。

解法一:满足题目要求的八皇后问题算法如下:(用的是书上的Las Vegas算法) 自然与描述如卜: 对n后问题,Las Vegas算法是随机地产生一组王后放置的位置。若成功了,便找到了 一个解;若失败了,就整个重来,再随机产生另外一组王后的位置。这样作,直至找到 解

伪代码如下: int queensLV(int rec[]){ int k,i=l,found=l;//第i个皇后放在第k列

while(i<=N && found) { found=0; for(k=l;k<=N && !found; k++) { //准备在当前这一行放置皇后 rec[i]=k;

if(place(rec,i)) //判断该位置能否放置皇后

if(rand()%2==0) found=l; //即便能放,也还要进行随机处理,只有50%的机会 } if (found) i++; //放下一行} return found; //如果found==l,表示找到一种方案解法二:回溯法(最好用这种方法) 自然语言描述: ■在棋盘的第一行的任意位置安放第一只皇后。 ■紧接着,我们就来放第二行,第二行的安放就要受一些限制了,因为与第一行的 皇后在同一列或同一对角线的位置上是不能安放皇后的,接下来是第三行,......, ■或许我们会遇到这种情况:在摆到某一行的时候,无论皇后摆放在什么位置,她 都会被其它行的皇后吃掉,这时就必须要回溯,将前面的皇后重新摆放, 伪代码如下:

用递归回溯法求N后问题 j = 0; q = 0; while (!q && j < n ) {|各后都安全,便可接受

(注释可以不写) 数据结构说明: ■数组既训表示机盘。若rec

[i]=j, 表示桃盘的第i行第j列上有皇后。

■数组C[j] = l表示笫j列上无皇后,l■数组D[kj = l表示第k条下行(\)对角线上无皇后。

数组Ufk] = 1表示第k条上行(/)对角线上无皇后。 ■ Record(s,j) { k = s-j + n; rec[s] = j; C[j] = 0; D[s + j - 1] = 0; U[k] = 0; } ■ Move-Off(s,j) {k = s-j + n; rec[s] =0; C|j] = l;D[s+j-l] = l;U[k] = 1; }

Try(s>{^ ____ 列数不到n就还有攀选者

;-n. . - n. v

j++; if (Safe(s,i))

{ Record(s,j); if (s == n) {q

iP.下该杆后的伶習f别軌、 n行后都放完就|不成功,删

去后在该行 的位置。 else Try(s+1);

1; output

if (!q) Move-Off(s, j); }}} 2011-6-21 return q }

计算机算法设计与分析 29

相关文档
最新文档