1.简单
当 n 很大时,哪个复杂度类增长最快?
- AO(n³)
- BO(n²)
- CO(n log n)
- DO(2ⁿ)
2.简单
分治算法的三个步骤是什么?
- A读取、计算、写入
- B排序、查找、返回
- C猜测、检查、重复
- D分解、解决、合并
3.简单
空间复杂度衡量的是:
- A代码的行数
- B程序编译后程序文件占用的磁盘空间
- C随着输入增大,算法所需的内存量
- D计算机的物理尺寸
4.中等
对 n 个 k 进制、d 位的整数进行 LSD 基数排序(radix sort),运行时间是多少?
- AO(n²)
- BO(n log n)
- CO(dn log k)
- DO(d(n + k))
5.中等
Prim 算法如何构建最小生成树?
- A把所有边按权重排序,逐条加入,除非会在森林中形成环
- B从一个起始顶点开始扩展一棵树,每次加入离开该树的最便宜的边
- C运行广度优先搜索并保留 BFS 树
- D不断删除最贵的边,直到没有环为止
6.中等
递推式 T(n) = 2T(n/2) + O(n) 的解是:
- AO(n)
- BO(n log n)
- CO(log n)
- DO(n²)
7.困难
对于哪种背包问题变体,贪心规则"按单位重量价值的顺序取物品"总能给出最优解?
- A两种变体都不可以
- B分数背包问题,物品可以分割
- C0/1 背包问题,物品必须整个拿取
- D两种变体都可以
8.困难
停机问题(halting problem)表明:
- A不存在一种算法能对所有程序和输入判定其是否会停机
- B每个程序最终都会停机
- C应当避免使用循环
- D有些程序在更快的计算机上运行得更快,所以是否停机取决于硬件
答案
- 1. D · O(2ⁿ)
- 2. D · 分解、解决、合并
- 3. C · 随着输入增大,算法所需的内存量
- 4. D · O(d(n + k))
- 5. B · 从一个起始顶点开始扩展一棵树,每次加入离开该树的最便宜的边
- 6. B · O(n log n)
- 7. B · 分数背包问题,物品可以分割
- 8. A · 不存在一种算法能对所有程序和输入判定其是否会停机
完整分步解答:请在 examproblems.com 上练习本主题。