《算法设计与分析》课程笔试样题

2026/4/24 16:12:05

《算法设计与分析》课程笔试样题一 (90分钟,开卷笔试,100分)

学年 学期 班

一、设n为正整数,利用大“O(·)”记号,将下列程序段的执行时间表示为n的函数,分析下列程序段的时间复杂度(每小题7.5分,共15分) 1.程序段1

i=1; k=0; while(i

y=0; n=100;

while ((y+1)*(y+1)

三、设有序顺序表中的元素依次为017, 094, 154, 170, 275, 503, 509, 512, 553, 612, 677, 765, 897, 908。试画出对其进行折半搜索时的二叉搜索树, 并计算搜索成功的平均搜索长度和搜索不成功的平均搜索长度(20分)

四、下面是利用贪心算法求解单源点最短路径问题的伪代码,请你阅读代码并在空白处填上适当的代码(20分)

Procedure SHORTEST_PATHS(v, COST, DIST, n)

// G是一个n个结点的有向图,它由成本邻接矩阵COST(n, n)表示,DIST(j)表示结点v到结点j的最短路径长度,这里1≤ j ≤n,DIST(v)置成0。 boolean S(1:n);

real COST(1:n, 1:n), DIST(1:n); integer u, v, n, i, w; for i=1 to n do S(i)=0; ① ;

repeat

S(v)=1; DIST(v)=0; u=v; for i=2 to n do

for所有S(w)=0的结点w do

找DIST(u)+COST(u, w)最小的节点w;

repeat

DIST(w)=min(DIST(w), ② ) ; S(w)=1; ③ ;

repeat

end SHORTEST_PATHS

五、下列代码为求多段图问题的伪C语言代码: ForwardShortestPath(float c[][n], int k, int n)

{ float C[n]; int d[n], p[k]; C[0:n-2]=MAX; C[n-1]=0; for(i=n-2; i>=0; i--)

for(j=i+1; j<=n-1; j++)

if((c[i][j]>0)&&(c[i][j]+C[j]

for(p[0]=0, p[k-1]=n-1, i=1; i

其中,n为图的节点数,k为段数,c[][]为成本邻接矩阵,C[]为各节点到汇点的最短路径长度,d[]为各节点到汇点的最短路径上的后向邻接节点,p[]存储最短路径上的节点序列。请回答:

1) 该算法属于什么算法类型?(5分) 2) 使用的那一种递推方法?(5分) 3) 时间复杂度为多少?(5分)

4) 当用邻接表表示图时,时间复杂度为多少?(5分) 5) 在空白处填上适当的语句。(10分) (共30分)

参考答案及评分标准

一、(每小题7.5分,共15分) 1. 分析:

i=1; // 1 k=0; // 1

while(i

根据各语句的频度,可得该程序段的时间消耗为T(n)=1+1+n+(n-1)+(n-1)=3n,可表示为T(n)=O(n)。(没有分析扣2分) 2. 分析:

由于n的值在程序中不变,由while的循环条件( (y+1)*(y+1)=n时退出循环。由(y+1)*(y+1)

?n?1??,可表示为T(n)=O(n)。(没有分析扣2分) 的执行时间为?

二、(每小题7.5分 共15分)

1.算法是解决问题的方法和过程,它具有四个特点:

1)输入0个或多个信息; 2)输出至少一个信息;

3)确定性,组成算法的每个指令是清晰的,无二义的,整个过程是确定的; 4)有限性。

1、2、3点答对每点给2分,第4点答对给1.5分。

2.分枝限界法的基本思想是对有约束条件的最优化问题的所有可行解(数目有限)空间进行搜索。该算法在具体执行时,把全部可行的解空间不断分割为越来越小的子集(称为分枝),并为每个子集内的解的值计算一个下界或上界(称为限界)。在每次分枝后,对凡是界限超出已知可行解值那些子集不再做进一步分枝。这样,解的许多子集(即搜索树上的许多结点)就可以不予考虑了,从而缩小了搜索范围。这一过程一直进行到找出可行解为止,该可行解的值不大于任何子集的限界。因此这种算法一般可以求得最优解。(部分答对酌情给分)

三、(共 20分,画出图 10分,ASLsucc和ASLunsucc给出正确答案各5分)

ASLSUCC114145??Ci?(1?2?2?3?4?4?7)?14i?11414115'159??Ci?(3?1?4?14)?15i?01515ASLunsucc

四:(共20分)

① DIST(i)=COST(v,i) (7分) ② DIST(u)+COST(u,w) (7分) ③ u=w (6分) 五.( 共30分)

1) 动态规划,5分; 2)前向递推法,5分; 3)O(n2),5分;

4)O(n+e),e表示图的边数,5分;

5)第①空填d[i]= j,第②空填p[i]=d[p[i-1]],每空5分。

《算法设计与分析》课程笔试样题二

(90分钟,开卷笔试,100分)

学年 学期 班

一、请你分析下列算法的时间复杂度。(10分) int Maxsum(int n, int a, int &besti, int &bestj)

{ int sum = 0;

for(int i=1; i<=n; i++){ int suma = 0;

for(int j=i; j<=n; j++){ suma + = a[j]; if(suma > sum){ sum = suma;

besti = i; bestj = j; } } }

return sum; }

二、简答题(2小题,共20分)


《算法设计与分析》课程笔试样题.doc 将本文的Word文档下载到电脑
搜索更多关于: 《算法设计与分析》课程笔试样题 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219