GESP第九次认证真题解析|Python七级真题回顾

四季读书网 2 0
GESP第九次认证真题解析|Python七级真题回顾

点击上方蓝字·关注我们

GESP第九次认证真题解析|Python七级真题回顾-第1张图片-四季读书网
GESP第九次认证真题解析|Python七级真题回顾-第2张图片-四季读书网
GESP第九次认证真题解析|Python七级真题回顾-第3张图片-四季读书网

CCF编程能力等级认证,英文名Grade Examination of Software Programming(以下简称GESP),由中国计算机学会发起并主办,是为青少年计算机和编程学习者提供学业能力验证的平台。GESP覆盖中小学全学段,符合条件的青少年均可参加认证。GESP旨在提升青少年计算机和编程教育水平,推广和普及青少年计算机和编程教育。

GESP考察语言为图形化编程、Python编程及C++编程,主要考察学生掌握相关编程知识和操作能力,熟悉编程各项基础知识和理论框架,通过设定不同等级的考试目标,让学生具备编程从简单的程序到复杂程序设计的编程能力,为后期专业化编程学习打下良好基础。

本次为大家带来的是20253月Python七级认证真题解析。

Python 七级

202503

一、单选题(每题2,30)

题号

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

答案

B

C

A

B

B

A

A

B

C

A

B

B

A

B

A

1题 下列哪个选项是python中的关键字?

A. function  

B. class

C. method  

D. object

答案B

分析:classPython中定义类的关键字,其他选项如functionmethodobject均不是关键字。

2题 下面程序的时间复杂度是  ()

GESP第九次认证真题解析|Python七级真题回顾-第4张图片-四季读书网

A. n

B. n*log(n)  

C. n的平方

D. n的立方

答案C

分析:双重循环的总次数为n+ n − 1 + n − 2 + n − 3 + ...1 = n(n+ 1)/2 ,时间复杂度为O(n2)

3题 以下代码输出的是什么  ()

GESP第九次认证真题解析|Python七级真题回顾-第5张图片-四季读书网

A. 1 2

B.报错

C. None 2

D. 1 None 

案:A

分析:B继承A并调⽤super().  init () ,正确初始化xy,输出为1 2 

4pow(10, log10(100))的值是

A. 10

B. 100   

C. 1000

D. 10000 

案:B

分析:log10(100) = 2 ,因此 pow(10, 2) = 100 

5exp(log(2))的值是 ()

A. 1  

B. 2  

C. 3

D. 10 

答案B

分析:exp(log(2))等价于e^ln2=2

6题 给定一个无向图 ,图的节点编号从 0n-1,图的边以邻接表的形式给出。编写的一个python程序 ,使⽤深 度优先搜索( DFS)遍历该图 ,并输出遍历的节点顺序。 下面程序中横线处应该填写的是 ()

GESP第九次认证真题解析|Python七级真题回顾-第6张图片-四季读书网

A. dfs(graph, neighbor, visited)

B. dfs(graph+1, neighbor, visited)  

C. dfs(graph, neighbor)

D. dfs(graph+1, visited)

答案A

分析:DFS递归需传递graph、当前邻居neighbor和已访问集合visited,正确调⽤为dfs(graph, neighbor, visited) 

7[10, 9, 2, 5, 3, 7, 101, 18] ,最长的严格上升子序列是 ()

A. [2, 3, 7, 101] ,长度为

B. [2, 5, 7, 101] ,长度为

C. [2, 5, 7, 101] ,长度为

D. [2, 5, 7, 18] ,长度为6

案:A

分析:最长严格上升子序列为 [2, 3, 7, 101] 长度为4

8题 给定一个整数数组 nums,找到其中最长的严格上升子序列的长度。子序列 是指从原数组中删除一些元素 (或不删除)后 ,剩余元素保持原有顺序的序列。 

要求:子序列必须是严格上升的(即每个元素都⽐前一个元素⼤)。 返回最长严格上升子序列的长度。

横线处应该填写的是 ()

GESP第九次认证真题解析|Python七级真题回顾-第7张图片-四季读书网

A. dp[i] = max(dp[i], dp[j])

B. dp[i] = max(dp[i], dp[j] + 1)

C. dp[i] = max(dp[i]+1, dp[j] + 1)  

D. dp[i] = max(dp[i]+1, dp[j])

答案B

分析:动态规划中,若nums[j] < nums[i] ,则dp[i]应更新为max(dp[i], dp[j] + 1) 

9题 以下代码的时间复杂度是多少?

GESP第九次认证真题解析|Python七级真题回顾-第8张图片-四季读书网

A. n

B. n的平方    

C. 2n次幂 

D. log(n)

案:C

分析:递归计算斐波那契数的未优化版本时间复杂度为O(2n)

10题 以下代码的时间复杂度是多少?

GESP第九次认证真题解析|Python七级真题回顾-第9张图片-四季读书网

A. n

B. n的平方    

C. 2n次幂

D. log(n) 

答案A

分析:通过记忆化(memo)优化后 ,时间复杂度降为 O(n)

11题 以下代码的功能是什么?

GESP第九次认证真题解析|Python七级真题回顾-第10张图片-四季读书网

A.计算数组的最⼤值

B.计算数组的最⼤子数组和

C.计算数组的最⼩值

D.计算数组的最⼩子数组和

答案:B

分析:代码通过动态规划计算数组的最⼤子数组和。

12题 以下代码的功能是什么?

GESP第九次认证真题解析|Python七级真题回顾-第11张图片-四季读书网

A.计算硬币的组合数

B.计算硬币的最⼩数量 ,使得总⾦额等于目标⾦额  

C.计算硬币的最⼤数量 ,使得总⾦额等于目标⾦额  

D.计算硬币的总⾦额

答案B

分析:该算法⽤于计算⽤最少硬币数凑出目标金额。

13题 以下代码的功能是什么?

GESP第九次认证真题解析|Python七级真题回顾-第12张图片-四季读书网

A.计算两个字符串的最长公共子序列 

B.计算两个字符串的最长公共子串

C.计算两个字符串的最长公共前缀 

D.计算两个字符串的最长公共后缀

答案A

分析:动态规划表填充规则对应最长公共子序列(LCS) 的计算。

14题 以下代码的功能是什么?

GESP第九次认证真题解析|Python七级真题回顾-第13张图片-四季读书网

A.计算背包问题的最⼩价值 

B.计算背包问题的最⼤价值 

C.计算背包问题的最⼩重量 

D.计算背包问题的最⼤重量

答案:B

分析:动态规划解决0-1背包问题 ,求最⼤价值。

15题 以下代码的功能是什么?

GESP第九次认证真题解析|Python七级真题回顾-第14张图片-四季读书网

A.计算从左上角到右下角的唯一路径数 

B.计算从左上角到右下角的最短路径

C.计算从左上角到右下角的最长路径

D.计算从左上角到右下角的最⼩路径

答案A

分析:动态规划计算⽹格中左上角到右下角的唯一路径数。

二、判断题(每题2分 ,共 20分)

题号

1

2

3

4

5

6

7

8

9

10

答案

×

×

×

×

1题 表达式 1e6100000010^6的值是相同的。

案:×

分析:10^6Python中是异或运算,结果为12,与1e61000000不同。

2题 在python语⾔中 ,函数调⽤前必须有函数声明或定义。

案:√

分析:Python要求函数调⽤前必须有定义或声明。

3题 快速排序一般是不稳定的。

答案:√

分析:快速排序通常是不稳定的。

4题 int类型能表达的数都能使⽤float类型精确表达。

答案×

分析:float无法精确表⽰所有 int范围内的整数。

5题 使⽤了math模块中的表达式cos(60)的结果类型为float、值约为0.5

答案×

分析:cos(60)的参数是弧度,实际计算的是60弧度的余弦值,约为-0.952

6题一颗N层的满二叉树 ,一定有2N − 1个结点。

答案:√

分析:满二叉树的节点数为2N−1

7题 邻接表和邻接矩阵都是图的存储形式。为了操作时间复杂度考虑 ,同一个图可以同时维护两种存储形式。

答案:√

分析:邻接表和邻接矩阵可以同时维护以提⾼不同操作的效率。

8题子类对象包含父类的所有成员(包括私有成员)。从父类继承的私有成员也是子类的成员 ,因此子类可以直接访问。

案:×

分析:子类无法直接访问父类的私有成员。

9题 动态规划算法通常有递归实现和递推实现。但由于递归调⽤在运⾏时会由于层数过多导致程序崩溃 ,因此有 些动态规划算法只能⽤递推实现。

答案:√

分析:递归可能导致栈溢出 ,递推实现更安全。

10题 按照下面的规则生成一棵二叉树:以一个⼈为根节点 ,其父亲为左子节点 ,母亲为右子节点。对其父亲、母亲分别⽤同样规则生成左子树和右子树。以此类推 ,记录30代的直系家谱 ,则这是一棵满二叉树。

案:×

分析:家谱树可能存在节点缺失 ,无法保证是满二叉树。

三、编程题(每题25分 ,共 50分)

编程题1

时间限制:3.0 s

内存限制:512.0 MB 图上移动

题目描述

A有一张包含n个结点与m条边的无向图,结点以1,2,…,n标号。小A会从图上选择一个结点作为起点,每一步移动到某个与当前小A所在结点相邻的结点。对于每个结点i1 in),小A想知道从结点i出发恰好移动1,2,…,k步之后,小A可能位于哪些结点。由于满足条件的结点可能有很多,你只需要求出这些结点的数量。

输入格式

第一行,三个正整数n,m,k,分别表示无向图的结点数与边数,最多移动的步数。接下来m行,每行两个正整数ui,vi,表示图中的一条连接结点uivi的无向边。输出格式

n行,第i行(1i n)包含k个整数,第j个整数(1 j k)表示从结点i出发恰好移动j步之后可能位于的结点数量。

样例

输入样例1

GESP第九次认证真题解析|Python七级真题回顾-第15张图片-四季读书网

输出样例1

GESP第九次认证真题解析|Python七级真题回顾-第16张图片-四季读书网

数据范围

对于20%的测试点 ,保证 k= 1

对于另外20%的测试点 ,保证 1 n 50 1 m 50

对于所有测试点,保证1 n 5001 m 5001 k 201 ui, vin

题目分析

题目要求计算从图上每个结点移动k步后能到的结点数量。 分析:每个结点移动0步能到的结点数量是多少呢?0

每个结点移动1步能到的结点数量是多少呢?该结点能直达的结点数量。每个结点移动2步能到的结点数量是多少呢?移动一步能到的结点+这些结点直达的结点。

很明显是一个dp。具体思路:

1.使⽤三维数组f[t][x][y]表⽰从起点x出发经过t步后能否到达节点y。若可达则标记为1,否则为0

2.初始化:当步数t=0时,每个起点只能停留在⾃⾝节点,因此f[0][x][x]=1

3.状态转移:对于每一步t,遍历所有可能的起点x和当前节点y。若f[t-1][x][y]为真(即存在路径到

y),则遍历y的所有相邻节点z,将f[t][x][z]标记为真。这一步模拟了从y移动一步到其邻居的过程。

4.结果统计:对于每个起点x和步数t,统计所有f[t][x][y]为真的节点y的数量。

参考程序

GESP第九次认证真题解析|Python七级真题回顾-第17张图片-四季读书网

编程题2

时间限制:3.0 s

内存限制:512.0 MB 等价消除

题目描述

A有一个仅包含小写英⽂字的字符串S

对于一个字符串,如果能通过每次删去其中两个相同字符的方式,将这个字符串变为空串,那么称这个字符串是可以被等价消除的。

A想知道S有多少子串是可以被等价消除的。

一个字符串S′S的子串,当且仅当删去S的某个可以为空的前缀和某个可以为空的后缀之后,可以得到S′

输入格式

第一行,一个正整数∣S∣,表示字符串S的长度。第二行,一个仅包含小写英⽂字的字符串S

输出格式

一行,一个整数,表示答案。

样例

输入样例1

GESP第九次认证真题解析|Python七级真题回顾-第18张图片-四季读书网

输出样例1

GESP第九次认证真题解析|Python七级真题回顾-第19张图片-四季读书网

输入样例2

GESP第九次认证真题解析|Python七级真题回顾-第20张图片-四季读书网

输出样例2

GESP第九次认证真题解析|Python七级真题回顾-第21张图片-四季读书网

数据范围

对于20%的测试点,保证S中仅包含ab两种字符。 对于另外 20%的测试点,保证1∣S∣2000

对于所有测试点,保证1∣S∣2×105

题目分析

题目要求统计字符串中所有可以被等价消除的子串数目。等价消除的条件是子串中每个字符的出现次数均为偶数 次。根据这个关键信息 ,那我们可以使⽤前缀异或状态的方法⾼效解决 ,具体思路如下。

1.前缀异或状态:使⽤一个26位的二进制数表⽰每个字符的出现次数的奇偶性。每次处理字符时 ,异或对应的二进制位。

2.状态统计:维护一个哈希表记录每个状态出现的次数。初始状态为0,出现次数为1

3.在线计算答案:遍历字符串时,当前状态出现过的次数即为新增的合法子串数目,累加这些数目即可得到答案。

参考程序

GESP第九次认证真题解析|Python七级真题回顾-第22张图片-四季读书网

策划:GESP技术委员会副主席 刘晓庆

技术支持:马强

GESP第九次认证真题解析|Python七级真题回顾-第23张图片-四季读书网
联系方式

1.GESP微信:关注CCF GESP公众号,点击"GESP小助手"即可交流

2.GESP邮箱:gesp@ccf.org.cn

注:请在邮件中详细描述咨询的问题并留下考生的联系方式及姓名、身份证号,以便及时有效处理。

3.GESP电话:0512-67656856

咨询时间:周一至周五(法定节假日除外):上午 8:30-12:00;下午 13:00-17:30

扫描下方二维码,关注GESP公众号了解更多资讯
GESP第九次认证真题解析|Python七级真题回顾-第24张图片-四季读书网

抱歉,评论功能暂时关闭!