GESP 2025年12月_C++七级试卷
从PDF导入:GESP 2025年12月_C++七级试卷
试卷题目预览
下面关于C++中形参、实参和定义域的说法中,正确的一项是( )。
已知三个序列:s1={3,1,8,2,5,6,7,4},s2={1,5,1,8,6,4,7,5,6},s3={1,8,3,5,7,...}。下面哪个序列是这三个最长公共子序列( )。
现有一个地址区间为0~10的哈希表,当出现冲突情况,会往后找第一个空的地址存储。哈希函数为h(x)=2+x mod 11。现在要依次存储(1,3,5,7,9),哈希函数为h(x)=(x2+x)mod 11 。其中存储在哈希表哪个地址中 ( )。
在0/1背包问题中,以下描述正确的是( )。
一棵深度为6(根节点深度为1)的完全二叉树,节点总数最少有( )。
对于如下二叉树,下面关于访问的顺序说法错误的是( )。

下面程序的运行结果为( )。
#include
using namespace std;
int f(int n) {
if (n <= 2) return n * 2;
return f(n - 1) + f(n - 2);
}
int main() {
cout << f(5) << endl;
return 0;
}
下面程序中,函数query的时间复杂度是( )。
#include
int query(int n, int a[], int x) {
int l = 0, r = n;
while (l < r) {
int mid = l + (r - l) / 2;
if (a[mid] >= x) r = mid;
else l = mid + 1;
}
if (l == n) return -1;
return l;
}
int main() {
int n = 10;
int x = 3;
int num[] = {1, 2, 2, 3, 3, 4, 5, 5, 6, 7};
std::cout << query(n, num, x) << "
";
return 0;
}
有5个字符,它们出现的次数分别为2次、2次、3次、3次、5次。现在要用哈夫曼编码的方式来为这些字符进行编码,最小加权路径长度WPL的值为( )。
下面程序的运行结果为( )。

一个简单无向图G有36条边,且每个顶点的度数都为4,则图G的顶点个数为( )。
下面关于二叉树的说法正确的是( )。
假设一个算法时间复杂度的递推式是T(n)=8T(n/4)+n²,和T(0)=1,那么这个算法的时间复杂度是( )。
下面哪一个可能是下图的深度优先遍历序列?( )

下面这个有向图的强连通分量的个数是( )。

C++语言中,表达式3^2的结果类型为int,值为9。
使用cmath头文件中的正弦函数,表达式sin(90)的结果类型为double,值约为1.0。
使用strcmp("10","9")比较两个字符串,返回值大于0,说明"10"比"9"大。
选择排序是一种不稳定的排序算法,而冒泡排序是一种稳定的排序算法。
求两个长度为n序列的最长公共子序列(LCS)长度时,可以使用滚动数组将空间复杂度从O(n²)优化到O(n)。
在无向图中,所有顶点的度数之和等于边数的两倍。
使用邻接矩阵存储一个有V个顶点、E条边的图,对该图进行一次完整的BFS遍历,时间复杂度为O(V+E)。
在图像处理或游戏开发中,泛洪(flood fill)算法既可以用BFS实现,也可以用DFS实现。
使用链地址法处理冲突的哈希表,当所有元素都映射到同一个槽位时,查找操作的最坏时间复杂度为O(n)。
一个包含V个顶点的连通无向图,其任何一棵生成树都恰好包含V-1条边。
城市规划
时间限制:1.0s 内存限制:512.0MB
A国有n座城市,城市之间由m条双向道路连接,任意一座城市均可经过若干条双向道路到达另一座城市。
城市依次以1,2,...,n编号。第i(1≤i≤m)条双向道路连接城市ui与城市vi。
对于城市u和城市v而言,它们之间的连通度d(u,v)定义为从城市u出发到达城市v所需经过的双向道路的最少条数。
由于道路是双向的,可以知道连通度满足d(u,v)=d(v,u),特殊地有d(u,u)=0。
现在A国正在规划城市建设方案。城市u的建设难度为它到其它城市的最大连通度。
请你求出建设难度最小的城市,如果有多个满足条件的城市,则选取其中编号最小的城市。
第一行,两个正整数n,m。接下来m行,每行两个整数ui,vi,表示一条双向道路。
输出一行,一个整数,表示建设难度最小的城市编号。
【样例输入1】 3 3 1 2 1 3 2 3 【样例输出1】 1 对于所有测试点,保证1≤n≤2000,1≤m≤2000。
学习小组
时间限制:1.0s 内存限制:512.0MB
班主任计划将班级里的n名同学划分为若干个学习小组,每名同学都需要分入某一个学习小组中。
班级里的同学依次以1,2,...,n编号,第i名同学有其发言积极度ci。
观察发现,如果一个学习小组中恰好包含编号为p₁,p₂,...,pk的k名同学,则该学习小组的基础讨论积极度为ak,综合讨论积极度为ak+max{cp₁,cp₂,...,cpk}。
给定基础讨论积极度a₁,a₂,...,an,请你计算将这n名同学划分为学习小组的所有可能方案中,综合讨论积极度之和的最大值。
第一行,一个正整数n。第二行,n个非负整数c₁,c₂,...,cn。第三行,n个非负整数a₁,a₂,...,an。
输出一行,一个整数,表示所有划分方案中,学习小组综合讨论积极度之和的最大值。 对于所有测试点,保证1≤n≤2000。