1.简单
什么是记忆化(memoisation)?
- A函数返回后释放内存
- B存储函数调用的结果,使重复调用能直接从内存中得到答案
- C在每行代码旁边写注释
- D自动把递归转换为等价的循环,从而不需要调用栈
2.简单
递归函数的基本情况是什么?
- A无需再进行递归调用就能直接给出答案的情况
- B使用内存最多的那次调用
- C输入最大的情况,它在任何递归调用之前就被处理
- D函数的第一行
3.简单
通过下标访问数组中的元素需要:
- AO(n)
- BO(1)
- CO(n²)
- DO(log n)
4.中等
快速排序总是使用第一个元素作为基准。它在哪种输入上表现出最坏情况?
- A长度为 2 的数组
- B所有元素都不相同的数组
- C随机顺序的数组
- D已经有序的数组
5.中等
下面代码的时间复杂度是多少:for i = 1 to n: for j = 1 to i: 执行 O(1) 的工作?
- AO(n log n)
- BO(n)
- CO(n³)
- DO(n²)
6.中等
Prim 算法如何构建最小生成树?
- A从一个起始顶点开始扩展一棵树,每次加入离开该树的最便宜的边
- B把所有边按权重排序,逐条加入,除非会在森林中形成环
- C不断删除最贵的边,直到没有环为止
- D运行广度优先搜索并保留 BFS 树
7.困难
关于 log(n!),哪个界是正确的?
- AΘ(n)
- BΘ(n²)
- CΘ(log n)
- DΘ(n log n)
8.困难
关于类 P 的哪个定义是正确的?
- A能够并行求解的问题
- B其解可以被验证、但绝不能在多项式时间内找到的问题
- C在每台计算机上都需要指数时间的问题
- D能由确定性算法在多项式时间内求解的判定问题
答案
- 1. B · 存储函数调用的结果,使重复调用能直接从内存中得到答案
- 2. A · 无需再进行递归调用就能直接给出答案的情况
- 3. B · O(1)
- 4. D · 已经有序的数组
- 5. D · O(n²)
- 6. A · 从一个起始顶点开始扩展一棵树,每次加入离开该树的最便宜的边
- 7. D · Θ(n log n)
- 8. D · 能由确定性算法在多项式时间内求解的判定问题
完整分步解答:请在 examproblems.com 上练习本主题。