【期末高分题集】[北京语言大学]《算法与数据分析》考核必备64
奥鹏期末考核
147262–《算法与数据分析》2022年北京语言大学期末复习题集
单选题:
(1)一个问题可用动态规划算法或贪心算法求解的关键特征是问题的
A.重叠子问题
B.最优子结构性质
C.贪心选择性质
D.定义最优解
答案问询微信:424329
(2)分支限界法解旅行售货员问题时,活结点表的组织形式是
A.最小堆
B.最大堆
C.栈
D.数组
答案问询微信:424329
(3)哈弗曼编码的贪心算法所需的计算时间为
A.O(n2n)
B.O(nlogn)
C.O(2n)
D.O(n)
答案问询微信:424329
(4)分治法所能解决的问题一般具有的几个特征不包括
A.该问题的规模缩小到一定的程度就可以容易地解决
B.该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质
C.利用该问题分解出的子问题的解不可以合并为该问题的解
D.原问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子问题
答案问询微信:424329
(5)下列随机算法中运行时有时候成功有时候失败的是
A.数值概率算法
B.舍伍德算法
C.拉斯维加斯算法
D.蒙特卡罗算法
答案问询微信:424329
(6)在下列算法中得到的解未必正确的是
A.蒙特卡罗算法
B.拉斯维加斯算法
C.舍伍德算法
D.数值概率算法
答案问询微信:424329
(7)采用广度优先策略搜索的算法是
A.分支界限法
B.动态规划法
C.贪心法
D.回溯法
答案问询微信:424329
(8)以下不可以使用分治法求解的是
A.棋盘覆盖问题
B.选择问题
C.归并排序
D.0/1背包问题
答案问询微信:424329
(9)最大效益优先是下列哪项的一种搜索方式
A.分支界限法
B.动态规划法
C.贪心法
D.回溯法
答案问询微信:424329
(10)下列算法中通常以自底向下的方式求解最优解的是
A.分治法
B.动态规划法
C.贪心法
D.回溯法
答案问询微信:424329
(11)优先队列式分支限界法选取扩展结点的原则是
A.先进先出
B.后进先出
C.结点的优先级
D.随机
答案问询微信:424329
(12)在下列算法中有时找不到问题解的是
A.蒙特卡罗算法
B.拉斯维加斯算法
C.舍伍德算法
D.数值概率算法
答案问询微信:424329
(13)备忘录方法是那种算法的变形
A.分治法
B.动态规划法
C.贪心法
D.回溯法
答案问询微信:424329
(14)衡量一个算法好坏的标准是
A.运行速度快
B.占用空间少
C.时间复杂度低
D.代码短
答案问询微信:424329
(15)采用最大效益优先搜索方式的算法是
A.分支界限法
B.动态规划法
C.贪心法
D.回溯法
答案问询微信:424329
(16)关于分支限界法的搜索策略描述错误的是
A.在扩展结点处,先生成其所有的儿子结点(分支)
B.从当前的活结点表中选择上一个扩展结点。
C.为了有效地选择下一扩展结点,加速搜索的进程,在每一个活结点处,计算一个函数值(限界)
D.根据函数值,从当前活结点表中选择一个最有利的结点作为扩展结点,使搜索朝着解空间上有最优解的分支推进,以便尽快地找出一个最优解。
答案问询微信:424329
(17)下列算法中通常以深度优先方式系统搜索问题解的是
A.备忘录法
B.动态规划法
C.贪心法
D.回溯法
答案问询微信:424329
(18)下面是贪心算法的基本要素的是
A.重叠子问题
B.构造最优解
C.贪心选择性质
D.定义最优解
答案问询微信:424329
(19)分支限界法解最大团问题时,活结点表的组织形式是
A.最小堆
B.最大堆
C.栈
D.数组
答案问询微信:424329
(20)下面不是分支界限法搜索方式的是
A.广度优先
B.最小耗费优先
C.最大效益优先
D.深度优先
答案问询微信:424329
(21)下列哪一种算法是随机化算法
A.贪心算法
B..回溯法
C..动态规划算法
D..舍伍德算法
答案问询微信:424329
(22)二分搜索算法是利用什么实现的算法
A.分治策略
B.动态规划法
C.贪心法
D.回溯法
答案问询微信:424329
(23)下列是动态规划算法基本要素的是
A.定义最优解
B.构造最优解
C.算出最优解
D.子问题重叠性质
答案问询微信:424329
(24)贪心算法与动态规划算法的共同点是
A.重叠子问题
B.构造最优解
C.贪心选择性质
D.最优子结构性质
答案问询微信:424329
(25)舍伍德算法是以下的哪一种
A.分支界限算法
B.概率算法
C.贪心算法
D.回溯算法
答案问询微信:424329
(26)(??????????)是贪心算法与动态规划算法的共同点。
A.重叠子问题
B.构造最优解
C.贪心选择性质
D.最优子结构性质
答案问询微信:424329
(27)设计动态规划算法的主要步骤不包括(??????????)。
A.找出最优解的性质
B.递归地定义最优值
C.以自顶向下的方式计算出最优值
D.根据计算最优值时得到的信息,构造最优解
答案问询微信:424329
(28)下列算法中不能解决0/1背包问题的是(??????????)。
A.贪心法
B.动态规划
C.回溯法
D.分支限界法
答案问询微信:424329
(29)回溯法搜索状态空间树是按照(??????????)的顺序。
A.中序遍历
B.广度优先遍历
C.深度优先遍历
D.层次优先遍历
答案问询微信:424329
(30)下列算法中通常以自底向上的方式求解最优解的是(??????????)。
A.备忘录法
B.动态规划法
C.贪心法
D.回溯法
答案问询微信:424329
(31)实现大整数的乘法是利用的算法(??????????)。
A.贪心法
B.动态规划法
C.分治策略
D.回溯法
答案问询微信:424329
(32)实现最大子段和利用的算法是(??????????)。
A.分治策略
B.动态规划法
C.贪心法
D.回溯法
答案问询微信:424329
(33)回溯法解旅行售货员问题时的解空间树是(??????????)。
A.子集树
B.排列树
C.深度优先生成树
D.广度优先生成树
答案问询微信:424329
(34)下列哪一种算法不是随机化算法(??????????)。
A.蒙特卡罗算法
B.拉斯维加斯算法
C.动态规划算法
D.舍伍德算法
答案问询微信:424329
(35)蒙特卡罗算法是(??????????)的一种。
A.分支界限算法
B.概率算法
C.贪心算法
D.回溯算法
答案问询微信:424329
(36)二分搜索算法是利用(??????????)实现的算法
A.分治策略
B.动态规划法
C.贪心法
D.回溯法
答案问询微信:424329
(37)在下列算法中有时找不到问题解的是(??????????)。
A.蒙特卡罗算法
B.拉斯维加斯算法
C.舍伍德算法
D.数值概率算法
答案问询微信:424329
(38)下面关于NP问题说法正确的是(??????????)。
A.NP问题都是不可能解决的问题
B.P类问题包含在NP类问题中
C.NP完全问题是P类问题的子集
D.NP类问题包含在P类问题中
答案问询微信:424329
(39)优先队列式分支限界法选取扩展结点的原则是(??????????)。
A.先进先出
B.后进先出
C.结点的优先级
D.随机
答案问询微信:424329
(40)实现循环赛日程表利用的算法是(??????????)。
A.分治策略
B.动态规划法
C.贪心法
D.回溯法
答案问询微信:424329
(41)下列随机算法中运行时有时候成功有时候失败的是(??????????)。
A.数值概率算法
B.舍伍德算法
C.拉斯维加斯算法
D.蒙特卡罗算法
答案问询微信:424329
(42)分支限界法解最大团问题时,活结点表的组织形式是(??????????)。
A.最小堆
B.最大堆
C.栈
D.数组
答案问询微信:424329
判断题:
(1)分治法与动态规划法的不同点是:适合于用动态规划法求解的问题,经分解得到的子问题往往不是互相独立的。而用分治法求解的问题,经分解得到的子问题往往是互相独立的
答案问询微信:424329
(2)快速排序算法不是基于分治策略的一种排序算法。
答案问询微信:424329
(3)贪心选择性质是贪心算法可行的第一个基本要素,也是贪心算法与动态规划算法的主要区别。
答案问询微信:424329
(4)程序是算法用某种程序设计语言的具体实现
答案问询微信:424329
(5)以深度优先方式系统搜索问题解的算法称为回溯法。
答案问询微信:424329
(6)分支限界法是一种只带有系统性的搜索算法。
答案问询微信:424329
(7)回溯法是一种既带有系统性又带有跳跃性的搜索算法。
答案问询微信:424329
(8)动态规划算法的两个基本要素是.最优子结构性质和重叠子问题性质。
答案问询微信:424329
(9)该问题的规模缩小到一定的程度就可以容易地解决是分治法的一个特征
答案问询微信:424329
(10)常见的分支限界法的算法框架有3种
答案问询微信:424329
(11)分支限界法与回溯法的求解目标相同
答案问询微信:424329
(12)回溯法搜索解空间树时,常用的两种剪枝函数为约束函数和限界函数。
答案问询微信:424329
(13)设计动态规划算法的主要步骤不包括根据计算最优值时得到的信息,构造最优解
答案问询微信:424329
(14)算法的复杂性没有时间复杂性和空间复杂性之分
答案问询微信:424329
(15)贪心算法的基本要素是贪心选择质和最优子结构性质
答案问询微信:424329
(16)分支限界法与回溯法都是一种在问题的解空间树T中搜索问题解的算法
答案问询微信:424329
(17)使用回溯法进行状态空间树裁剪分支时一般有两个标准:约束条件和目标函数的界,N皇后问题和0/1背包问题正好是两种不同的类型,其中同时使用约束条件和目标函数的界进行裁剪的是0/1背包问题,只使用约束条件进行裁剪的是N皇后问题
答案问询微信:424329
(18)拉斯维加斯算法找到的解不一定是正确解
答案问询微信:424329
(19)使用回溯法进行状态空间树裁剪分支时一般有两个标准:约束条件和目标函数的界,N皇后问题和0/1背包问题正好是两种不同的类型,其中同时使用约束条件和目标函数的界进行裁剪的是0/1背包问题,只使用约束条件进行裁剪的是N皇后问题。
答案问询微信:424329
(20)贪心选择性质是贪心算法可行的第一个基本要素,也是贪心算法与动态规划算法的主要区别。
答案问询微信:424329
(21)贪心算法的基本要素是贪心选择性质和最优子结构性质。
答案问询微信:424329
(22)矩阵连乘问题的算法可由动态规划设计实现。
答案问询微信:424329
(23)算法的复杂性没有时间复杂性和空间复杂性之分。
答案问询微信:424329
(24)算法是指解决问题的一种方法或一个过程。
答案问询微信:424329
(25)从分治法的一般设计模式可以看出,用它设计出的程序一般不是递归算法。
答案问询微信:424329
(26)以深度优先方式系统搜索问题解的算法称为动态规划法。
答案问询微信:424329
(27)分支限界法是一种既带有系统性又带有跳跃性的搜索算法。
答案问询微信:424329
(28)程序是算法用某种程序设计语言的具体实现。
答案问询微信:424329
(29)算法的“确定性”指的是组成算法的每条指令是清晰的,有歧义的。
答案问询微信:424329
(30)回溯法搜索解空间树时,常用的两种剪枝函数为约束函数和限界函数。
答案问询微信:424329
(31)算法是由若干条指令组成的有穷序列,不用满足输入输出
答案问询微信:奥鹏期末考核424329
(32)大整数乘积算法不是用分治法来设计的。
答案问询微信:424329
(33)任何可用计算机求解的问题所需的时间都与其规模无关。
答案问询微信:424329
(34)回溯法是一种既带有系统性又带有跳跃性的搜索算法。
答案问询微信:424329
(35)所谓贪心选择性质是指所求问题的整体最优解不可以通过一系列局部最优的选择,即贪心选择来达到。
答案问询微信:424329
计算题:
(1)请编写计算斐波那契(Fibonacci)数列的第n项函数fib(n)。
答案问询微信:424329
fib(0)=0;
fib(1)=1;
fib(n)=fib(n-1)+fib(n-2) (当n1时)。
写成递归函数有:
int fib(int n)
{ if (n==0) return 0;
if (n==1) return 1;
if (n1) return fib(n-1)+fib(n-2);
}
(2)假设某国家发行了n种不同面值的邮票,并且规定每张信封上最多只允许贴m张邮票。连续邮箱问题要求对于给定的n和m,给出邮票面值的最佳设计,在1张信封上贴出从邮资1开始,增量为1的最大连续邮资区间。?例如当n=5,m=4时,面值为1,3,11,15,32的5种邮票可以贴出邮资的最大连续区间是1到70。
答案问询微信:424329
int n,m;
int a[100];
int count=1,sum=0;
int flag;
void traceback(int num)
{
int i;
if(flag)
return ;
if(num==m) {
if(sum==count) {
flag=1;
}
return ;
}
for(i=0;i=n;i++) { //一共有n种邮票可选,但是还可以不贴
sum+=a[i];
traceback(num+1);
sum-=a[i];
}
}
int main()
{
int i;
scanf("%d%d",
a[0]=0;
for(i=1;i=n;i++)
scanf("%d",
while(1) {
flag=0;
traceback(0);
if(flag==0) //第一次贴不出满足的邮票,终止
break;
count++;
}
printf("%dn",count);
return 0;
}
(3)请给出背包问题的程序解析。
答案问询微信:424329
void main()
{
int m,n,i,j,w[50],p[50],pl[50],b[50],s=0,max;
printf("输入背包容量m,物品种类n :");
scanf("%d %d",
for(i=1;i=n;i=i+1)
{
printf("输入物品的重量W和价值P :");
scanf("%d %d",
pl[i]=p[i];
s=s+w[i];
}
if(s=m)
{
printf("whole choosen");
//return;
}
for(i=1;i=n;i=i+1)
{
max=1;
for(j=2;j=n;j=j+1)
if(pl[j]/w[j]pl[max]/w[max])
max=j;
pl[max]=0;
b[i]=max;
}
for(i=1,s=0;sm =n;i=i+1)
s=s+w[b[i]];
if(s!=m)
w[b[i-1]]=m-w[b[i-1]];
for(j=1;j=i-1;j=j+1)
printf("choose weight %dn",w[b[j]]);
}
简答题:
(1)请简述计算机求解问题的步骤?
答案问询微信:424329
(2)简述回溯法
答案问询微信:424329
(3)利用迭代算法解决问题,需要做好哪些方面的工作
答案问询微信:424329
二、建立迭代关系式。所谓迭代关系式,指如何从变量的前一个值推出其下一个值的公式(或关系)。迭代关系式的建立是解决迭代问题的关键,通常可以使用递推或倒推的方法来完成。
三、对迭代过程进行控制。在什么时候结束迭代过程?这是编写迭代程序必须考虑的问题。不能让迭代过程无休止地重复执行下去。迭代过程的控制通常可分为两种情况:一种是所需的迭代次数是个确定的值,可以计算出来;另一种是所需的迭代次数无法确定。对于前一种情况,可以构建一个固定次数的循环来实现对迭代过程的控制;对于后一种情况,需要进一步分析出用来结束迭代过程的条件。
(4)分治法的基本步骤
答案问询微信:424329
(1)分解:将原问题分解为若干个规模较小,相互独立,与原问题形式相同的子问题;
(2)解决:若子问题规模较小而容易被解决则直接解,否则递归地解各个子问题;
(3)合并:将各个子问题的解合并为原问题的解。
(5)解析背包问题
答案问询微信:424329
(6)分治法的基本步骤。
答案问询微信:424329
(1)分解:将原问题分解为若干个规模较小,相互独立,与原问题形式相同的子问题;
(2)解决:若子问题规模较小而容易被解决则直接解,否则递归地解各个子问题;
(3)合并:将各个子问题的解合并为原问题的解。