2021 初赛

以下不属于面向对象程序设计语言的是()。

A.C++

B.Python

C.Java

D.C

解析:

纯属记忆题,根据不同的编程特点,可以分为:

面向过程语言:(C,Pascal)

面向对象语言:(C++,C#, Java,Python等)

所以C++,Python,Java都是面向对象语言,而C是面向过程语言,所以选D

错误原因:

没有牢固掌握面向对象和过程语言的例子,想到了运行前的翻译方式的不同。( 我好像扯太远了


如果一棵二叉树只有根节点,那么这棵二叉树的高度为11。请问高度为55的完全二叉树有()种不同形态?

A.1616

B.1515

C.1717

D.3232

解析:

一道计算题,我们得知道完全二叉树的特殊性:

  • 完全二叉树:如果一棵二叉树最多只有最下面两层结点度数可以小于22,并且最下面一层的结点都集中在该层最左边的若干位置上,则称此二叉树为完全二叉树。

如果最后一层在最右边缺失了00个,11个,22个......2k112^{k-1}-1个节点,就是深度为kk的完全二叉树,当k==5k==5,节点数为2511+1=162^{5-1}-1+1=16个节点。

注意,叶子结点不可能是00,不然就不是高度为55的完全二叉树了。

一共1616种,所以选A

错误原因:

没有看懂题目,也有一部分原因是因为我对二叉树的知识不是很牢固,以后多补一补。


在数据压缩编码中的哈夫曼编码方法在本质上是一种()的策略。

A.枚举

B.贪心

C.递归

D.动态规划

解析:

一道记忆题,计算哈夫曼编码的方法是利用贪心思想从集合F中选取根节点的权值最小和次小的两颗二叉树作为左子树,右子树去构造一个新的二叉树,这棵新的二叉树根节点的权值为左右子树根节点权值和。

所以选择B

错误原因:

没有复习,哈夫曼编码与哈夫曼数的相关知识已经忘得差不多了,以后再努力补补吧。


有四个人要从A点坐一条船过河到B点,船一开始在A点。该船一次最多可坐两人。已知这四个人中每个人独自坐船的过河时间分别为11224488,且每两个人坐船的过河时间为两人独自过河时间的较大者。则最短()时间可以让四个人都过河到B点(包括从B点把船开回A点的时间)。

A.1414

B.1515

C.1616

D.1717

解析:

一道思维题,我们设独自坐船的过河时间为编号,且时间单位为分钟,具体搭船方法如下:

  1. 1122过河,花费22分钟,并让11回去,花费11分钟;
  2. 4488过河,花费88分钟,并让22回去,花费22分钟;
  3. 1122过河,花费22分钟。

一共花费2+1+8+2+2=152+1+8+2+2=15分钟,所以选B。

错误原因:

没有想到中途可以换成耗时更少的其他人回来回来,认为最少是8+1+4+1+2=168+1+4+1+2=16个时间单位。

谢谢