#GESP260607T1. 【GESP26年6月七级】单选题(每题 2 分,共 30 分)
- 下列C++代码的输出结果是( )。
#include <iostream>
#include <cmath>
using namespace std;
int main() {
cout << (int)(sqrt(50) + log2(8));
return 0;
}
{{ select(1) }}
- A. 9
- B. 10
- C. 11
- D. 12
- 下列关于
<cmath>或<math.h>中的数学库函数的说法,正确的是( )。
{{ select(2) }}
- A. sqrt(49) 的返回值可以参与浮点运算。
- B. log2(32) 的返回值类型为 int。
- C. pow(2, 5) 的返回值类型一定为 int。
- D. sin(90) 的参数 90 表示 90 度。
- 下列关于C++函数参数传递的说法,正确的是( )。
{{ select(3) }}
- A. 函数形参一定和实参使用同一块内存。
- B. 值传递时,在函数内修改形参一定会修改实参。
- C. 引用形参绑定到实参后,在函数内修改引用形参通常会影响实参。
- D. 指针形参不能用于修改实参指向的数据。
- 有5个字符,它们出现的次数分别为 6, 7, 8, 9, 15。使用哈夫曼编码时,最小的带权路径长度 WPL 为( )。
{{ select(4) }}
- A. 42
- B. 64
- C. 87
- D. 69
- 已知网格上每个网格点有一个数字,a[i][j] 表示第 i 行第 j 列处网格点上的数字。若 dp[i][j] 表示从网格左上角(第 0 行第 0 列)走到第 i 行第 j 列时能取得的最大数字和,且每次只能向右或向下移动。对于 i > 0 且 j > 0 的位置,正确的状态转移代码为( )。
{{ select(5) }}
- A. dp[i][j] = a[i][j] + min(dp[i - 1][j], dp[i][j - 1])
- B. dp[i][j] = max(dp[i - 1][j - 1], dp[i][j])
- C. dp[i][j] = a[i][j] + max(dp[i - 1][j], dp[i][j - 1])
- D. dp[i][j] = a[i][j] + dp[i - 1][j - 1]
- 已知 f[0] = 0,f[1] = 2,并且对 i >= 2 有 f[i] = max(f[i - 1], f[i - 2] + a[i])。若 a[1 .. 5] = {2, 7, 9, 3, 1},则 f[5] 的值为( )。
{{ select(6) }}
- A. 10
- B. 15
- C. 12
- D. 11
- 下面代码是一维数组优化 0/1 背包的核心片段,其中 w[i] 表示第 i 件物品的重量,v[i] 表示第 i 件物品的价值。横线处应填入( )。
for (int i = 1; i <= n; i++) {
for (int c = W; c >= w[i]; c--) {
__________;
}
}
{{ select(7) }}
- A. dp[c] = max(dp[c], dp[c + w[i]] + v[i])
- B. dp[c] = min(dp[c], dp[c - w[i]] + v[i])
- C. dp[c] = dp[c - w[i]] + v[i]
- D. dp[c] = max(dp[c], dp[c - w[i]] + v[i])
- 下面程序片段主要体现的算法思想是( )。
void dfs(int x, int y) {
vis[x][y] = true;
for (int k = 0; k < 4; k++) {
int nx = x + dx[k], ny = y + dy[k];
if (inside(nx, ny) && a[nx][ny] == 1 && !vis[nx][ny])
dfs(nx, ny);
}
}
{{ select(8) }}
- A. 泛洪算法
- B. 二分查找
- C. 贪心算法
- D. 归并排序
- 下列关于排序稳定性的说法,正确的是( )。
{{ select(9) }}
- A. 冒泡排序在只交换相邻逆序元素时是稳定排序
- B. 选择排序一定是稳定排序
- C. 快速排序一定是稳定排序
- D. 稳定排序一定会改变相等元素的相对顺序
- 无向图的边为 (1, 2), (1, 3), (2, 4), (3, 4), (4, 5)。从顶点 1 开始进行 BFS,每轮根据出队顶点,将与其相邻顶点按编号从小到大入队,则顶点 4 第一次入队时,队列的状态为( )。
{{ select(10) }}
- A. 1, 2, 3, 4
- B. 2, 3, 4
- C. 3, 4
- D. 3, 4, 5
- 一个长度为 11、下标为 0 到 10 的哈希表采用线性探测法处理冲突,哈希函数为 h(x) = x % 11。依次插入 22、33、4、15、26,则 26 最终存放在下标( )。
{{ select(11) }}
- A. 4
- B. 5
- C. 3
- D. 6
- 关于哈希表处理冲突的方法,下列说法正确的是( )。
{{ select(12) }}
- A. 线性探测法发生冲突后,只能放弃插入该元素。
- B. 链地址法可以把哈希到同一位置的多个元素组织在同一个桶中。
- C. 只要哈希表长度是素数,就一定不会发生冲突。
- D. 开放定址法查找元素时不需要考虑冲突位置。
- 某算法需要枚举 n 个对象;对每个对象,还需要进行一次二分查找。若二分查找的对象规模也是 n,则该算法的时间复杂度通常为( )。
{{ select(13) }}
- A. O(n)
- B. O(n log n)
- C. O(n²)
- D. O(log n)
- 在升序数组中用二分查找第一个大于等于 x 的位置。若当前中点 mid 满足 a[mid] < x,下一步应( )。
{{ select(14) }}
- A. 令闭区间右边界变为 mid - 1
- B. 令闭区间左边界变为 mid + 1
- C. 立即返回 mid
- D. 交换 a[mid] 与 x
- 在如下网格中,# 表示不能经过的格子,. 表示可以经过的格子。从左上角走到右下角,每次只能向右或向下移动,不同路径共有( )条。
. . . . .
. # . # .
. . . . .
# . # . .
. . . . .
{{ select(15) }}
- A. 5
- B. 6
- C. 7
- D. 9