1.简单
一个问题通常在什么情况下被称为易解的(tractable)?
- A能在多项式时间内求解
- B能在常数时间内求解
- C没有解
- D只能通过尝试所有可能来求解
2.简单
什么是蛮力算法(brute-force algorithm)?
- A在多个处理器上运行的算法
- B总是使用递归的算法
- C随机猜测答案的算法
- D尝试所有可能的候选解的算法
3.简单
哪种排序算法选择一个基准,并把数组划分为较小元素和较大元素两部分?
- A冒泡排序
- B插入排序
- C快速排序
- D归并排序
4.中等
在有 V 个顶点、E 条边的图上,Bellman–Ford 算法的时间复杂度是多少?
- AO(V + E)
- BO(V³ × E)
- CO(V × E)
- DO(E log V)
5.中等
关于一个没有可达基本情况的递归函数,下列哪个说法是正确的?
- A它的运行时间为 O(1)
- B它会不断调用自身,直到调用栈溢出
- C它会自动返回 0
- D编译器总会把它变成能安全结束的循环
6.中等
在无权图上进行广度优先搜索(BFS)可以求出:
- A最小生成树
- B含负权重边的图中的最短路径
- C从起始节点出发、按边数计的最短路径
- D所有图的拓扑序
7.困难
为什么在单链表上二分查找不能达到 O(log n) 的时间?
- A由于不能按下标直接访问,到达中间元素需要 O(n) 步
- B二分查找至少需要两倍的内存
- C链表节点上的比较更慢
- D链表无法排序
8.困难
对于哪种背包问题变体,贪心规则"按单位重量价值的顺序取物品"总能给出最优解?
- A两种变体都不可以
- B0/1 背包问题,物品必须整个拿取
- C两种变体都可以
- D分数背包问题,物品可以分割
答案
- 1. A · 能在多项式时间内求解
- 2. D · 尝试所有可能的候选解的算法
- 3. C · 快速排序
- 4. C · O(V × E)
- 5. B · 它会不断调用自身,直到调用栈溢出
- 6. C · 从起始节点出发、按边数计的最短路径
- 7. A · 由于不能按下标直接访问,到达中间元素需要 O(n) 步
- 8. D · 分数背包问题,物品可以分割
完整分步解答:请在 examproblems.com 上练习本主题。