算法设计与分析期末复习题

这是一份关于算法设计与分析的复习资料,涵盖了选择题、填空题、简答题、计算题和算法求解题等内容。涉及的算法概念包括Hanoi塔、递归、动态规划、回溯法、分支限界法、矩阵乘法、分治法、贪心算法等。题目涉及到算法的时间复杂性、最优子结构、动态规划与分治的区别、回溯法的效率因素、以及各种算法如快速排序、合并排序、Prim算法、Kruskal算法等的性质和应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一. 选择题

1.Hanoi塔问题如下图所示。现要求将塔座A上的的所有圆盘移到塔座B上,并仍按同样顺序叠置。移动圆盘时遵守Hanoi塔问题的移动规则。由此设计出解Hanoi塔问题的递归算法正确的为:(B)
在这里插入图片描述
4. 算法分析中,记号O表示(B ), 记号 表示(A ), 记号 表示(D)。
A.渐进下界
B.渐进上界
C.非紧上界
D.紧渐进界
E.非紧下界

  1. 以下关于渐进记号的性质是正确的有:( A)
    A.
    B.
    C. O(f(n))+O(g(n)) = O(min{f(n),g(n)})
    D.

4 程序块( A)是回溯法中遍历排列树的算法框架程序。
A.
void backtrack (int t)
{
if (t>n) output(x);
else
for (int i=t;i<=n;i++) {
swap(x[t], x[i]);
if (legal(t)) backtrack(t+1);
swap(x[t], x[i]);
}
}
B.
void backtrack (int t)
{
if (t>n) output(x);
else
for (int i=0;i<=1;i++) {
x[t]=i;
if (legal(t)) backtrack(t+1);
}
}
C
void backtrack (int t)
{
if (t>n) output(x);
else
for (int i=0;i<=1;i++) {
x[t]=i;
if (legal(t)) backtrack(t-1);
}
}
D
void backtrack (int t)
{
if (t>n) output(x);
else
for (int i=t;i<=n;i++) {
swap(x[t], x[i]);
if (legal(t)) backtrack(t+1);
}
}

5 动态规划算法的基本要素为( C)
A. 最优子结构性质与贪心选择性质
B.重叠子问题性质与贪心选择性质
C.最优子结构性质与重叠子问题性质
D. 预排序与递归调用

6 从活结点表中选择下一个扩展结点的不同方式将导致不同的分支限界法,以下除( C)之外都是最常见的方式。
A.队列式分支限界法
B.优先队列式分支限界法
C.栈式分支限界法
D.FIFO 分支限界法

7下面关于矩阵乘法的 Stranssen 算法,描述错误的是(D )。
A. 采用了分治法的思想
B. 时间复杂度低于 O(n3)
C. 利用了分块矩阵乘法
D. 对所有可乘的矩阵都适用

8、 分支限界法与回溯法都是在问题的解空间树 T 上搜索问题的解,二者(B)。
A.求解目标不同,搜索方式相同
B.求解目标不同,搜索方式也不同
C.求解目标相同,搜索方式不同
D.求解目标相同,搜索方式也相同

9、回溯法的效率不依赖于以下哪一个因素?( C)
A. 产生x[k]的时间;
B. 满足显约束的x[k]值的个数;
C. 问题的解空间的形式;
D. 计算上界函数bound的时间;
E. 满足约束函数和上界函数约束的所有x[k]的个数。
F. 计算约束函数constraint的时间;

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值