2. 0,1,2,3,4中选取4个数字,能组成()个不同四位数。(注:最小的四位数是1000,最大的四位数是9999。)
A.96
B.18
C.120
D.84
【参考答案】A
【解析】选第一个数字时,可以从1,2,3,4中挑选一个,有4种方案,第二个数字可以从0,以及1,2,3,4中剩余的3个数中挑选一个,有4种方案,依此类推,第三、四个数分别有3种和2种方案,总方案数为4*4*3*2=96。
4.假设有n根柱子,需要按照以下规则依次放置编号为1、2、3、....的圆环:每根柱子的底部固定,顶部可以放入圆环:每次从柱子顶部放入圆环时,需要保证任何两个相邻圆环的编号之和是一个完全平方数。请计算当有4根柱子时,最多可以放置()个圆环。
A.7
B.9
C.11
D.5
【参考答案】C
【解析】最优方案为1,2,3,4根柱子分别放1,3,6,10、 2,7,9、 4,5,11、 8。
5.以下对数据结构的表述不恰当的一项是:()。
A.队列是一种先进先出(FIFO)的线性结构
B.哈夫曼树的构造过程主要是为了实现图的深度优先搜索
C.散列表是一种通过散列函数将关键字映射到存储位置的数据结构
D.二叉树是一种每个结点最多有两个子结点的树结构
【参考答案】B
【解析】哈夫曼树是带权路径长度最短的树,是用来解决最短编码问题的,和树的深度优先搜索无关。
6.以下连通无向图中,()一定可以用不超过两种颜色进行染色。
A.完全三叉树
B.平面图
C.边双连通图
D.欧拉图
【参考答案】A
【解析】可以将树中的节点按深度奇偶性分类,然后分别染两种颜色即可。
7.最长公共子序列长度常常用来衡量两个序列的相似度。其定义如下:给定两个序列×={x1,×2,X3,...,Xm}和Y={y1,y2,y3,...,yn},最长公共子序列(LCS)问题的目目标是找到一个最长的新序列Z={zj,Z2,Z3,....Zk},使得序列Z既是序列X的子序列,又是是序列Y的子序列,且序列Z的长度k在满足上述条件的序列里是最大的。(注:序列A是序列B的子序列,当且仅当在保持序列B元素顺序的情况下,从序列B中删除若干个元素,可以使得剩余的元素构成序列A。)则序列"ABCAAAABA"和"ABABCBABA"的最长公共子序列长度为()。
A.4
B.5
C.6
D.7
【参考答案】C
【解析】最长公共子序列为“ABCABA”。
9.假设我们有以下的C++代码:
int a = 5, b = 3, c = 4;
bool res =a & b || c ^ b && a | c ;
请问,res的值是什么?()。
提示:在C++中,逻辑运算的优先级从高到低依次为:逻辑非(!)、逻辑与(&&)、逻辑或(||)。位运算的优先级从高到低依次为:位非(~)、位与(&)、位异或(^)、位或(|)。同时,双目位运算的优先级高于双目逻辑运算;逻辑非和位非优先级相同,且高于所有双目运算符。
A.true
B.false
C.1
D.0
【参考答案】A
【解析】按照题目给出的提示,式子等价于 (a&b)||((c^b)&&(a|c)),计算结果为true。
10.假设快速排序算法的输入是一个长度为n的已排序数组,且该快速排序算法在分治过程总是选择第一个元素作为基准元素。以下哪个选项描述的是在这种情况下的快速排序行为?()
A.快速排序对于此类输入的表现最好,因为数组已经排序。
B.快速排序对于此类输入的时间复杂度是0(nlogn)。
C.快速排序对于此类输入的时间复杂度是0(n²)。
D.快速排序无法对此类数组进行排序,因为数组已经排序。
【参考答案】C
【解析】该快速排序每次都只会排序一个元素,复杂度为O()。
11.以下哪个命令,能将一个名为"main.cpp"的C++源文件,编译并生成一个名为"main"的可执行文件?()
A.g++ -o main main.cpp
B.g++ -o main.cpp main
C.g++ main -0 main.cpp
D.g++ main.cpp -0 main.cpp
【参考答案】A
【解析】A选项是把名为“main.cpp”的C++源文件编译并生成名为“main”的可执行文件。
13.如图是一张包含6个顶点的有向图,但顶点间不存在拓扑序。如果要删除其中一条边,使这6个顶点能进行拓扑排序,请问总共有多少条边可以作为候选的被删除边? ()
A.1
B.2
C.3
D.4
【参考答案】C
【解析】可以删除3->4,4->1,1->3,这三条边。
A.10
B.11
C.12
D.13
【参考答案】B
【解析】由题目描述可知,n是一个十六进制数,其各位为x0到xk,而f函数是求n的每一个十六进制位上数字的和。比如,当n等于时,那么f(n)=1+0+8=9。如果f(n)的结果是超过1位的十六进制数,那么就对结果继续使用f函数,直到结果为一位数为止,这个一位的十六进制数即为题目所说的不动点。题目要求的范围是100到1A0,其中满足f(n)=9的有108,117,126,135,144,153,162,171,180这9个数。满足f(f(n))=9,即f(n)=的有1E9,1F8这两个数,100到1A0范围内不存在计算3次以上f函数后得到9的数,因此答案为9+2=11。故此题选B。
15.现在用如下代码来计算xⁿ,其时间复杂度为()。
double quick_power(doublex, unsigned n) {
if(n== 0) return 1;
if(n== 1)return x;
return quick_power(x,n/2)
* quick_power(x,n/2)
((n&1)?x:1);
}
A.O(n)
B.O(1)
C.O(logn)
D.O(nlogn)
【参考答案】A
【解析】时间复杂度为O(n+n/2+n/4+n/8+…)=O(2n)=O(n)。