1.简单
递归函数的基本情况是什么?
- A无需再进行递归调用就能直接给出答案的情况
- B输入最大的情况,它在任何递归调用之前就被处理
- C使用内存最多的那次调用
- D函数的第一行
2.简单
什么是递归?
- A永远不会结束的循环
- B一种排序方法
- C一种数据结构
- D在更小的输入上调用自身的函数
3.简单
下列哪个运行时间是多项式的?
- AO(2ⁿ)
- BO(n!)
- CO(n³)
- DO(nⁿ)
4.中等
贪心算法(greedy algorithm):
- A总能给出最优解
- B只使用递归
- C尝试所有可能的解
- D在每一步都做出局部最优的选择
5.中等
Prim 算法如何构建最小生成树?
- A从一个起始顶点开始扩展一棵树,每次加入离开该树的最便宜的边
- B不断删除最贵的边,直到没有环为止
- C运行广度优先搜索并保留 BFS 树
- D把所有边按权重排序,逐条加入,除非会在森林中形成环
6.中等
递推式 T(n) = 2T(n/2) + O(1) 的解是什么?
- AO(n log n)
- BO(log n)
- CO(n)
- DO(n²)
7.困难
在有 V 个顶点、E 条边的图上,使用二叉堆的 Dijkstra 算法运行时间是多少?
- AO(V³)
- BO(V × E)
- CO(V + E)
- DO((V + E) log V)
8.困难
一个问题是 NP 完全(NP-complete)的,当且仅当它:
- A不属于 NP,但比所有 NP 问题都难,例如停机问题
- B属于 NP,且所有 NP 问题都能在多项式时间内归约到它
- C不可能被解决
- D可以在多项式时间内解决
答案
- 1. A · 无需再进行递归调用就能直接给出答案的情况
- 2. D · 在更小的输入上调用自身的函数
- 3. C · O(n³)
- 4. D · 在每一步都做出局部最优的选择
- 5. A · 从一个起始顶点开始扩展一棵树,每次加入离开该树的最便宜的边
- 6. C · O(n)
- 7. D · O((V + E) log V)
- 8. B · 属于 NP,且所有 NP 问题都能在多项式时间内归约到它
完整分步解答:请在 examproblems.com 上练习本主题。