2022 算法初步(北京大学) 最新满分章节测试答案
本答案对应课程为:点我自动跳转查看
本课程起止时间为:2022-03-27到2022-06-12
第1周 开启算法学习之旅 1.5 单元测验
1、 问题:本节反复用的一个例子是用无刻度桶的量水问题。现在还是假设有A(7升)、B(5升)两个桶。有人给出了一个算法,请问它的执行将导致的结果。
选项:
A:A=6, B=0
B:A=3, B=0
C:A=0, B=3
D:算法描述不清楚
答案: 【A=3, B=0】
2、 问题:许多人小时候都做过“农夫,狼、羊和白菜”过河的智力题。这里就假设大家都是知道规则的。现在我们虚构一个农夫和5样动物(称它们为A,B,C,D,E)过河的题目。假设没农夫在场的时候,A要吃B,B要吃C,C要吃D,D要吃E;没有其他吃的关系了。同时还假设那条船上除了农夫外,还可以容纳最多2个动物。有人设计了一个让它们过河的算法如下:
选项:
A:(1)是(2)可能(3)可能
B:(1)否(2)可能(3)可能
C:(1)是(2)不可能(3)不可能
D:(1)否(2)不可能(3)不可能
答案: 【(1)是(2)不可能(3)不可能】
3、 问题:变量及其赋值,是讨论计算机算法和程序的一个最基本的概念。在算法描述的表达中,有时用箭头,例如x
选项:
A:20,10,5
B:10,5,2.5
C:10,5,16
D:上面的都不对
答案: 【10,5,16】
4、 问题:在上一题中的第2条语句,写起来比较啰嗦,常常用所谓“while循环”来表示。第3条语句,则用所谓条件语句“if then else ”来表示。于是,上面的算法也可以描述为:
选项:
A:3个
B:5个
C:7个
D:9个
答案: 【7个】
5、 问题:根据算法的描述,估计某些语句(操作)的执行次数,是算法效率分析的要求,其中主要是对循环结构的理解。分析下面这个三重循环构成的算法,指出其中语句4的执行次数。
选项:
A:3次
B:6次
C:10次
D:27次
答案: 【10次】
6、 问题:除了准确数出语句的执行次数,在算法学习和应用中更多的是采用所谓“大O记法”来大致估计算法的效率(复杂性)。对于下面的算法进行分析:(1)指出正确的“大O记法”;(2)设n=3,算法结束时x和y那一个较大。
选项:
A:O(n),x>y
B:O(n^2),x<y
C:O(n^3),x>y
D:O(n^4),x<y
答案: 【O(n^3),x>y】
7、 问题:在讲到算法类型的时候,我们提到一种区别的维度是“数值计算”和“非数值计算”。数值计算通常体现出“迭代收敛”的特征。例如下面的算法(牛顿法求
选项:
A:少于5次
B:在5次和10次之间
C:在10次和20次之间
D:算法不会结束(死循环)
答案: 【在5次和10次之间】
8、 问题:我们回到前面的第5题。那题看起来没什么实际意义,但基于对它的理解,可以很容易构造一个解“真问题”的算法:求哪些整数(三元组,a,b,c)满足勾股定律。我们知道a=3,b=4和c=5是满足的。现在的问题就是,给定一个上限n,有哪些小于n的整数a,b和c会满足勾股定理呢?要求是,如果有的话,一个也不能漏。稍微想一下,可知满足等式的a、b和c中不可能有相等的,因而总有个大小顺序,设a最小,c最大,这样就等价于我们要求0<a<b<c<n,满足
选项:
A:(n-1)^3次
B:(n-1)(n-2)(n-3)次
C:(n-1)(n-2)(n-3)/6次
D:O(n^3)
答案: 【(n-1)(n-2)(n-3)/6次;
O(n^3)】
第2周 量水问题 2.4 单元测验
1、 问题:利用欧几里得扩展式中系数的关系式:
选项:
A:x4=-1,y4=2
B:x4=2,y4=-3
C: x4=-3,y4=5
D:x4=-8,y4=13
答案: 【x4=2,y4=-3】
2、 问题:设a、b为两个正整数,整数x0、y0满足ax0+by0 = gcd(a,b),即x0、y0是(a, b)欧几里得扩展式的一组解。对于以下关于求解满足ax+by = gcd(a,b),x、y通解的描述,请选择正确的选项,k为整数。
选项:
A:x = x0 – (b)k,y = y0 + ak
B:x = x0 – (a/gcd(a,b))k,y = y0 + (b/gcd(a,b))k
C:x = x0 – ak,y = y0 + bk
D:x = x0 – (b/gcd(a,b))k,y = y0 + (a/gcd(a,b))k
答案: 【x = x0 – (b/gcd(a,b))k,y = y0 + (a/gcd(a,b))k】
3、 问题:设a、b为两个正整数,且a>b, 请选择以下正确的选项。
选项:
A:若a、b均为偶数,则gcd( a,b ) =2gcd( a/2,b/2 )
B: 若a为偶数,b为奇数,则gcd( a,b ) = gcd( a/2,b )
C:gcd(a,b) = gcd(a-b, b)
D: gcd(a,b) = gcd(a-b, a)
答案: 【若a、b均为偶数,则gcd( a,b ) =2gcd( a/2,b/2 );
若a为偶数,b为奇数,则gcd( a,b ) = gcd( a/2,b );
gcd(a,b) = gcd(a-b, b);
gcd(a,b) = gcd(a-b, a)】
4、 问题:两个整数a,b分别为55,34,采用扩展欧几里得算法得出一组解(x,y)为(13,-21),满足等式ax+by=gcd(a,b)。请选择以下正确的选项。
选项:
A:13是满足ax+by=gcd(a,b),x绝对值最小的整数
B:21是满足ax+by=gcd(a,b),y绝对值最小的整数
C:x的绝对值还可以减小,会引发y的绝对值发生变化
D:y的绝对值还可以减小,会引发x的绝对值发生变化
答案: 【13是满足ax+by=gcd(a,b),x绝对值最小的整数;
21是满足ax+by=gcd(a,b),y绝对值最小的整数】
5、 问题:设a、b为两个正整数,请选择以下正确的选项。
选项:
A:gcd(a/m, b/m)=gcd(a,b)/m,其中,m为整数,且能被a、b整除
B:lcm(a,b)=ab/gcd(a,b), (lcm(a,b)为a和b的最小公倍数)
C:gcd(ab,m)=gcd(a,m) * gcd(b,m),m为整数
D:以上都不对
答案: 【gcd(a/m, b/m)=gcd(a,b)/m,其中,m为整数,且能被a、b整除;
lcm(a,b)=ab/gcd(a,b), (lcm(a,b)为a和b的最小公倍数)】
6、 问题:可以采用蛮力法(枚举法)求满足 ax+by=d 的整数x和y,设a、b为正整数。先用欧几里德算法求出 d=gcd(a,b) ,然后按下表所示的方法,x从1开始,逐步尝试y=-1、-2、……,每次y绝对值增1,计算ax+by,若ax+by<d,则x+1,y不变,继续按上述方法改变y值并计算ax+by,直到最终满足ax+by=d,得到一组满足扩展式的x和y。请选择以下正确的选项。
选项:
A:此方法得到的x,y值不一定是所有满足扩展式中绝对值最小的
B:采用这个蛮力法计算a=7,b=5,得到的x、y值为3、-4
C:若取x<0,y>0,仍按上表步骤和算式,即,x从-1开始,尝试y=1、2、……,也可以得到一组x、y解满足ax+by=d
D:以上都不对
答案: 【此方法得到的x,y值不一定是所有满足扩展式中绝对值最小的;
采用这个蛮力法计算a=7,b=5,得到的x、y值为3、-4】
第3周 二分法 3.3 单元测验
1、 问题:有序列表list如下图所示,含10个元素。用如下二分法搜索算法搜索目标对象(1)x=15,(2)x=45。设变量low、high初值为0、9。以下选项是算法结束时变量low、high的值,请选择正确的选项。
选项:
A:(1)low=5,high=4;(2)low=10,high=9
B:(1)low=6,high=5;(2)low=11,high=10
C:(1)low=4,high=5;(2)low=10,high=9
D:(1)low=4,high=5;(2)low=9,high=10
答案: 【(1)low=5,high=4;(2)low=10,high=9】
2、 问题:采用习题1所述的二分搜索算法在一个有序列表中搜索目标对象x,如果查找成功就返回对应的序号。如果没有找到该目标对象,就把x插入到列表中,使得结果仍保持有序(假设序列中没有重复数据)。当x不在列表中,打破循环条件时,对应边界值仍保存在low、mid、high变量中,应该将x插入到什么位置(忽略越界问题)?
选项:
A: x应该插入到结束循环时mid值所指的位置
B:x应该插入到结束循环时low值所指的位置
C:x应该插入到结束循环时high值所指的位置
D:不一定
答案: 【x应该插入到结束循环时low值所指的位置】
3、 问题:采用二分法求解方程F(x)=0的一个实根,有时很难快速获得满足F(a)*F(b)<0的两个端点(a,b)。如果函数F(x)能写成两个简单函数差的形式,F(x)=f(x)-g(x),例如,求方程:
选项:
A: [3,4]
B: [2,3]
C:[3,3.5]
D: [3.5,4]
答案: 【 [3.5,4]】
4、 问题:假设有序列表中可能会有某些重复的元素,要求采用二分搜索查找目标对象时,找到后能定位到重复元素的第一个。以下给出了(a)、(b)、(c)、(d)四个算法(循环体外部分省略),希望在while循环结束时,若列表中包含搜索对象x,low值指向与x匹配的第一个元素。请选择正确的选项。
选项:
A: (a)满足要求
B:(b)满足要求
C:(c)满足要求
D:(d)满足要求
答案: 【 (a)满足要求;
(c)满足要求】
第4周 最优编码树 4.4 单元测验
1、 问题:假设5个符号出现的频次分别为:12,13,20,25,30,下图是对应这5个符号产生编码树,根据哈夫曼编码算法回答哪棵是最优编码树。(方便起见,节点中直接标注了对应的频次)
选项:
A:(a)、(b)是最优编码树
B:(b)、(c)是最优编码树
C:(a)、(d)是最优编码树
D:(b)、(d)是最优编码树
答案: 【(b)、(d)是最优编码树】
2、 问题:某信源有8种符号X={A1,A2,A3,A4,A5,A6,A7,A8},在数据中出现的概率为P=(0.28,0.18,0.17,0.11,0.10,0.08,0.06,0.02),请构建哈夫曼编码树,并选择以下正确的选项。
选项:
A:码位均值为2.78
B:得到的哈夫曼编码,2个2位码,3个3位码,1个4位码,2个5位码
C:得到的哈夫曼编码,1个1位码,2个2位码,2个3位码,1个4位码,2个5位码
D:码位均值为2.61
答案: 【码位均值为2.78;
得到的哈夫曼编码,2个2位码,3个3位码,1个4位码,2个5位码】
3、 问题:关于哈夫曼编码算法,请选择以下正确的选项。
选项:
A:哈夫曼编码算法得到的编码树是一个最优编码树
B:基于贪心策略得到的结果是最优结果
C:哈夫曼编码树只要设定好左右边值是“0”还是“1”,得到的编码是唯一的
D:哈夫曼编码树一定是一棵满二叉树(除叶节点外每个节点都有两个子节点)
答案: 【哈夫曼编码算法得到的编码树是一个最优编码树;
哈夫曼编码树一定是一棵满二叉树(除叶节点外每个节点都有两个子节点)】
4、 问题:下图(a)是本节给出的哈夫曼编码树算法,树节点可以采用二维数组node[][]描述,设需要为s0~s4共计5个字符编码,其对应的出现频次分别为1,3,4,5,7。节点node[i][j],i表示节点ID,j对应节点的不同属性,依次为对应的符号,频率,左右子节点,用“-1”表示对应的属性为空。运行算法1~3行后,形成叶节点如下图(b)所示,继续运行算法构建哈夫曼树中其他节点,选择以下正确的选项。
选项:
A:算法结束时,node[5][:]=[-1, 4, 0, 1]
B:算法结束时,node[6][:]= [-1, 9, 2, 5]
C:算法结束时,node[7][:]= [-1, 14, 5, 6]
D:算法结束时,node[8][:]= [-1, 20, 6, 7]
答案: 【算法结束时,node[5][:]=[-1, 4, 0, 1];
算法结束时,node[8][:]= [-1, 20, 6, 7]】
5、 问题:一棵哈夫曼树有 59 个节点,则其叶子节点的个数是几个?
答案: 【30】
第5周 优化互连互通的成本 5.4 单元测验
本文章不含期末不含主观题!!
本文章不含期末不含主观题!!
支付后可长期查看
有疑问请添加客服QQ 2356025045反馈
如遇卡顿看不了请换个浏览器即可打开
请看清楚了再购买哦,电子资源购买后不支持退款哦