2015年算法分析与设计期末考试试卷B卷

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

西南交通大学2015 — 2016学年第(一)学期考试试卷

课程代码 3244152课程名称 算法分析与设计

考试时间 120分钟

阅卷教师签字: __________________________________

填空题(每空1分,共15分)

1、 程序是 (1)

用某种程序设计语言的具体实现。

2、 矩阵连乘问题的算法可由

(2)

设计实现。

3、 从分治法的一般设计模式可以看出,用它设计出的程序一般是

(3)

4、 大整数乘积算法是用 (4) 来设计的。

5、 贪心算法总是做出在当前看来

(5) 的选择。也就是说贪心算法并不从整体最优

考虑,它所做出的选择只是在某种意义上的

(6) o

6、 回溯法是一种既带有

(7)

又带有 (8)

的搜索算法。

7、 平衡二叉树对于查找算法而言是一种变治策略,属于变治思想中的 (9)

类型

8、 在忽略常数因子的情况下,0、门和0三个符号中,

(10)

提供了算法运行时

间的一个上界。

9、 算法的“确定性”指的是组成算法的每条

(11)

是清晰的,无歧义的。

10、 冋题的(12) 是该冋题可用动态规划算法或贪心算法求解的关键特征。

11、 算法就是一组有穷

(13),它们规定了解决某一特定类型问题的

(14) o

12、 变治思想有三种主要的类型:实例化简,改变表现,

(15) o

___________________________________________________________________________________ L

线订装封密

线订装封密

__________________ 二 线订装封密

级班

选择题(每题2分,共20 分)

1、二分搜索算法是利用()实现的算法。

A、分治策略

B、动态规划法

C、贪心法

D、回溯法

2、衡量一个算法好坏的标准是()。

A、运行速度快

B、占用空间少

C、时间复杂度低

D、代码短

3、能采用贪心算法求最优解的问题,一般具有的重要性质为:()

A.最优子结构性质与贪心选择性质 B •重叠子问题性质与贪心选择性质

C •最优子结构性质与重叠子问题性质 D.预排序与递归调用

4、常见的两种分支限界法为()

A、广度优先分支限界法与深度优先分支限界法;

B、队列式(FIFO )分支限界法与堆栈式分支限界法;

C 、排列树法与子集树法;

D、队列式(FIFO )分支限界法与优先队列式分支限界法;

5、实现循环赛日程表利用的算法是()

A、分治策略

B、动态规划法

C、贪心法

D、回溯法

6、回溯法的效率不依赖于下列哪些因素()

A. 满足显约束的值的个数

B. 计算约束函数的时间

C. 计算限界函数的时间

D. 确定解空间的时间

7、

A、子问题必须是一样的

C、子问题的解可以合并

8、实现合并排序利用的算法是(

A、分治策略

B、动态规划法B、子问题不能够重复

D、原问题和子问题使用相同的方法解)。

C、贪心法

D、回溯法

使用分治法求解不需要满足的条件是(

A、O (n2n)

B、O (nlogn )

C、O (2n)

10、广度优先是( )的一搜索方式。

A、分支界限法

B、动态规划法

C、贪心法

D、回溯法

三、算法及程序分析(共25分)。

1 •阅读下面的程序,按要求回答问题:(共10分)

#i nclude

#i nclude

in t vis[101][101];

int map[101][101];

int R,C;

int dp(int i,int j);

int mai n()

{

int i,j,a ns,max;

sca nf("%d%d",&R,&C);

for(i=0;i

for(j=0;j

sca nf("%d",&map[i][j]);

max = 0;

for(i=0;i

memset(vis[i],-1,sizeof(vis[i]));

for(j=0;j

ans = dp(i,j);

if(an s>max) max = ans;

}

}

prin tf("%d\n",max);

return 0;

}

int dp(i nt i,i nt j)

{

int max = 0;

if(vis[i][j]>0)

return vis[i][j];

if(i-1>=0)

if(map[i-1][j]

max = dp(i-1,j); if(i+1

if(map[i+1][j]

max = dp(i+1,j);

if(j-1>=0)

if(map[i][j-1]

if(max

max = dp(i,j-1);

相关文档
最新文档