202312 CCF-GESP编程能力等级认证C++七级真题 建议答题时长:60min
1. 单选题

定义变量 double x ,如果下面代码输入为 100 ,输出最接近(   )。

A

0

B

-5

C

-8

D

8

2. 单选题

对于下面动态规划方法实现的函数,以下选项中最适合表达其状态转移函数的为(   )。

A

B

C

D

3. 单选题

下面代码可以用来求最长上升子序列(LIS)的长度,如果输入是: 5 1 7 3 5 9 ,则输出是(   )。

A

9 7 5 1 1 9

B

1 2 2 3 4 4

C

1 3 5 7 9 9

D

1 1 1 1 1 1

4. 单选题

C++语言中,下列关于关键字 static 的描述不正确的是(   )。

A

可以修饰类的成员函数。

B

常量静态成员可以在类外进行初始化。

C

若 a 是类 A 常量静态成员,则 a 的地址都可以访问且唯一。

D

静态全局对象一定在 main 函数调用前完成初始化,执行完 main 函数后被析构。

5. 单选题

G 是一个非连通无向图,共有 28 条边,则该图至少有(   )个顶点。

A

6

B

7

C

8

D

9

6. 单选题

哈希表长31,按照下面的程序依次输入 4 17 28 30 4 ,则最后的 4 存入哪个位置?(   )

A

3

B

4

C

5

D

6

7. 单选题

某二叉树T的先序遍历序列为: {A B D F C E G H} ,中序遍历序列为: {B F D A G E H C} ,则下列说法中正确的是(   )。

A

T的度为1

B

T的高为4

C

T有4个叶节点

D

以上说法都不对

8. 单选题

下面代码段可以求两个字符串 s1 和 s2 的最长公共子串(LCS),下列相关描述不正确的是(   )。

A

代码的时间复杂度为O(n2)

B

代码的空间复杂度为O(n2)

C

空间复杂度已经最优

D

采用了动态规划求解

9. 单选题

图的广度优先搜索中既要维护一个标志数组标志已访问的图的结点,还需哪种结构存放结点以实现遍历?(   )

A

双向栈

B

队列

C

哈希表

D

10. 单选题

对关键字序列 {44,36,23,35,52,73,90,58} 建立哈希表,哈希函数为 h(k)=k%7 ,执行下面的Insert 函数,则等概率情况下的平均成功查找长度(即查找成功时的关键字比较次数的均值)为(   )。

A

7/8

B

1

C

1.5

D

2

11. 单选题

学生在读期间所上的某些课程中需要先上其他的课程,所有课程和课程间的先修关系构成一个有向图 G ,有向边 <U, V> 表示课程 U 是课程 V 的先修课,则要找到某门课程 C 的全部先修课下面哪种方法不可行?(   )

A

BFS搜索

B

DFS搜索

C

DFS+BFS

D

动态规划

12. 单选题

一棵完全二叉树有 2023 个结点,则叶结点有多少个?(   )

A

1024

B

1013

C

1012

D

1011

13. 单选题

用下面的邻接表结构保存一个有向图 G , InfoType 和 VertexType 是定义好的类。设 G 有 n 个顶点、e 条弧,则求图 G 中某个顶点 u (其顶点序号为 k )的度的算法复杂度是(   )。

A

O(n)

B

O(e)

C

O(n+e)

D

O(n+2*e)

14. 单选题

给定一个简单有向图 G ,判断其中是否存在环路的下列说法哪个最准确?(   )

A

BFS更快

B

DFS更快

C

BFS和DFS一样快

D

不确定

15. 单选题

从顶点 v1 开始遍历下图 G 得到顶点访问序列,在下面所给的 4 个序列中符合广度优先的序列有几个?(   )

{v1 v2 v3 v4 v5} , {v1 v2 v4 v3 v5} , {v1 v4 v2 v3 v5} , {v1 v2 v4 v5 v3}

A

4

B

3

C

2

D

1

16. 判断题

小杨这学期准备参加GESP的7级考试,其中有关于三角函数的内容,他能够通过下面的代码找到结束循环的角度值。(   )

A

正确

B

错误

17. 判断题

小杨在开发画笔刷小程序(applet),操作之一是选中黄颜色,然后在下面的左图的中间区域双击后,就变成了右图。这个操作可以用图的泛洪算法来实现。(   )

A

正确

B

错误

18. 判断题

假设一棵完全二叉树共有 个节点,则树的深度为log(N)+1。(   )

A

正确

B

错误

19. 判断题

给定一个数字序列 A1,A2,A3,...,An ,要求 i 和 j ( 1<=i<=j<=n ),使 Ai+…+Aj 最大,可以使用动态规划方法来求解。(   )

A

正确

B

错误

20. 判断题

若变量 x 为 double 类型正数,则 log(exp(x)) > log10(x) 。(   )

A

正确

B

错误

21. 判断题

简单有向图有 n 个顶点和 e 条弧,可以用邻接矩阵或邻接表来存储,二者求节点 u 的度的时间复杂度一样。(   )

A

正确

B

错误

22. 判断题

某个哈希表键值 x 为整数,为其定义哈希函数 H(x)=x%p ,则 p 选择素数时不会产生冲突。(   )

A

正确

B

错误

23. 判断题

动态规划只要推导出状态转移方程,就可以写出递归程序来求出最优解。(   )

A

正确

B

错误

24. 判断题

广度优先搜索(BFS)能够判断图是否连通。(   )

A

正确

B

错误

25. 判断题

在C++中,如果定义了构造函数,则创建对象时先执行完缺省的构造函数,再执行这个定义的构造函数。(   )

A

正确

B

错误

26. 编程题

商品交易

时间限制:1.0 s

内存限制:128.0 MB

问题描述

市场上共有N种商品,编号从0至N-1,其中,第i种商品价值vi元。

现在共有M个商人,编号从0至M-1。在第j个商人这,你可以使用第xj种商品交换第yj种商品。每个商人都会按照商品价值进行交易,具体来说,如果vxj>vyj,他将会付给你vyj-vxj元钱;否则,那么你需要付给商人vxj-vyj元钱。除此之外,每次交易商人还会收取1元作为手续费,不论交易商品的价值孰高孰低。

你现在拥有商品a,并希望通过一些交换来获得商品b。请问你至少要花费多少钱?(当然,这个最小花费也可能是负数,这表示你可以在完成目标的同时赚取一些钱。)

输入描述

第一行四个整数N,M,a,b,分别表示商品的数量、商人的数量、你持有的商品以及你希望获得的商品。保证0≤a,b<N,保证 a≠b。

第二行N个用单个空格隔开的正整数v0,v1,…,vN-1,依次表示每种商品的价值。保证1≤vi≤109。

接下来M行,每行两个整数xj,yj,表示第j个商人愿意使用第xj种商品交换第yj种商品。保证0≤xj,yj<N,保证xj≠yj。

输出描述

输出一行一个整数,表示最少的花费。特别地,如果无法通过交换换取商品b,请输出 No solution

特别提醒

在常规程序中,输入、输出时提供提示是好习惯。但在本场考试中,由于系统限定,请不要在输入、输出中附带任何提示信息。

 

样例输入 1

3 5 0 2
1 2 4
1 0
2 0
0 1
2 1
1 2

样例输出 1

5

样例解释 1

可以先找2号商人,花2-1=1元的差价以及1元手续费换得商品1,再找4号商人,花4-2=2元的差价以及1元手续费换得商品 。总计花费1+1+2+1=5元。

 

样例输入 2

3 3 0 2
100 2 4
0 1
1 2
0 2

样例输出 2

-95

样例解释 2

可以找2号商人,直接换得商品2的同时,赚取100-4=96元差价,再支付1元手续费,净赚95元。

也可以先找0号商人换取商品1,再找1号商人换取商品2,不过这样只能赚94元。

 

样例输入 3

4 4 3 0
1 2 3 4
1 0
0 1
3 2
2 3

样例输出 3

No solution

数据规模

对于30%的测试点,保证N≤10,M≤20。

对于70%的测试点,保证N≤103,M≤104。

对于100%的测试点,保证N≤105,M≤2×105。

查看答案
27. 编程题

试题名称:纸牌游戏

时间限制:1.0 s

内存限制:128.0 MB

问题描述

你和小杨在玩一个纸牌游戏。

你和小杨各有 3 张牌,分别是 0、1、2。你们要进行N轮游戏,每轮游戏双方都要出一张牌,并按 1 战胜 0,2 战胜1,0 战胜 2 的规则决出胜负。第i轮的胜者可以获得2ai分,败者不得分,如果双方出牌相同,则算平局,二人都可获得ai分(i=1,2,…,N )。

玩了一会后,你们觉得这样太过于单调,于是双方给自己制定了不同的新规则。小杨会在整局游戏开始前确定自己全部n轮的出牌,并将他的全部计划告诉你;而你从第 2 轮开始,要么继续出上一轮出的牌,要么记一次“换牌”。

游戏结束时,你换了t次牌,就要额外扣b1+…+bt分。

请计算出你最多能获得多少分。

输入描述

第一行一个整数N,表示游戏轮数。

第二行N个用单个空格隔开的非负整数a1,……,aN,意义见题目描述。

第三行N-1个用单个空格隔开的非负整数b1,…,bN-1,表示换牌的罚分,具体含义见题目描述。由于游戏进行N轮,所以你至多可以换N-1次牌。

第四行N个用单个空格隔开的整数c1,…,cN-1,依次表示小杨从第 轮至第 轮出的牌。保证ci∈0,1,2。

输出描述

一行一个整数,表示你最多获得的分数。

特别提醒

在常规程序中,输入、输出时提供提示是好习惯。但在本场考试中,由于系统限定,请不要在输入、输出中附带任何提示信息。

 

样例输入 1

4
1 2 10 100
1 100 1
1 1 2 0

样例输出 1

219

样例解释 1

你可以第1轮出 0,并在第2,3轮保持不变,如此输掉第1,2轮,但在第3轮中取胜,获得2×10=20分;随后,你可以在第4轮中以扣1分为代价改出 1,并在第4轮中取得胜利,获得2×100=200分。如此,你可以获得最高的总分20+200-1=219 。

 

样例输入 2

6
3 7 2 8 9 4
1 3 9 27 81
0 1 2 1 2 0

样例输出 2

56

数据规模

对于30%的测试点,保证N≤15。

对于60%的测试点,保证N≤100。

对于所有测试点,保证N≤1000;保证0≤ai,bi≤106。

查看答案
试题目录
单选题
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
判断题
16 17 18 19 20 21 22 23 24 25
编程题
26 27
赣ICP备20007335号-2