1.简单
归并排序采用哪种设计策略?
- A贪心选择
- B动态规划
- C蛮力法
- D分治法(divide and conquer)
2.简单
什么是算法?
- A解决问题的、由有限个明确定义的步骤组成的序列
- B任何带有图形界面的计算机程序
- C一种存储数字的数据结构
- D一种为书写数学公式而设计的编程语言
3.简单
分治算法的三个步骤是什么?
- A分解、解决、合并
- B排序、查找、返回
- C猜测、检查、重复
- D读取、计算、写入
4.中等
关于一个没有可达基本情况的递归函数,下列哪个说法是正确的?
- A它会自动返回 0
- B编译器总会把它变成能安全结束的循环
- C它会不断调用自身,直到调用栈溢出
- D它的运行时间为 O(1)
5.中等
在无权图上进行广度优先搜索(BFS)可以求出:
- A含负权重边的图中的最短路径
- B所有图的拓扑序
- C最小生成树
- D从起始节点出发、按边数计的最短路径
6.中等
在活动选择问题中,哪条贪心规则总能得到数量最多的互不重叠的活动?
- A选择最早开始的活动
- B选择最早结束的活动,然后在与之相容的活动中重复这一步
- C先选择与其他活动重叠最少的活动,然后在与之相容的活动中重复这一步
- D先选择最短的活动
7.困难
为什么哈希表的平均查找时间是 O(1),而最坏情况是 O(n)?
- A许多键可能冲突(collision)到同一个桶中
- B键必须先排序
- C数组的访问时间是 O(n)
- D哈希函数运行很慢
8.困难
一个问题是 NP 完全(NP-complete)的,当且仅当它:
- A不可能被解决
- B属于 NP,且所有 NP 问题都能在多项式时间内归约到它
- C可以在多项式时间内解决
- D不属于 NP,但比所有 NP 问题都难,例如停机问题
答案
- 1. D · 分治法(divide and conquer)
- 2. A · 解决问题的、由有限个明确定义的步骤组成的序列
- 3. A · 分解、解决、合并
- 4. C · 它会不断调用自身,直到调用栈溢出
- 5. D · 从起始节点出发、按边数计的最短路径
- 6. B · 选择最早结束的活动,然后在与之相容的活动中重复这一步
- 7. A · 许多键可能冲突(collision)到同一个桶中
- 8. B · 属于 NP,且所有 NP 问题都能在多项式时间内归约到它
完整分步解答:请在 examproblems.com 上练习本主题。