GESP2024年09月Python六级试卷
从PDF导入:GESP2024年09月Python六级试卷
试卷题目预览
以下( )没有涉及Python语言的面向对象特性支持。
关于Python中面向对象的类的继承,下面说法错误的是( )
有6个元素,按照6,5,4,3,2,1的顺序进入栈S,下列( )的出栈序列是不能出现的。
采用如下代码实现检查输入的字符串括号是否匹配,横线上应填入的代码为( )。
def paren_match(expr):
s = Stack()
balanced = True
index = 0
while index < len(expr) and balanced:
symbol = expr[index]
if symbol in '([{':
下面代码判断队列的第一个元素是否等于a,并删除该元素,横线上应填写( )。
if
q.get()
print('元素是队列的第一个元素,并已被移除。'.format(a))
假设字母表 {a,b,c,d,e} 在字符串出现的频率分别为 10%,15%,30%,16%,29%。若使用哈夫曼编码方式对字母进行二进制编码,则字符 abcdef 分别对应的一组哈夫曼编码的长度分别为( )。
以下Python代码实现n位的格雷码,则横线上应填写( )。
def generate_gray_code(n):
if n <= 0:
return []
if n == 1:
return [0, 1]
gray_code = generate_gray_code(n - 1)
for x in gray_code]
return gray_code + inverted_gray_code
给定一棵二叉树,其前序遍历结果为:ABDECFG,中序遍历结果为:DEBACFG,则这棵树的正确后序遍历结果是( )。
一棵有n 个结点的完全二叉树用数组进行存储与表示,已知根结点存储在数组的第 个位置。若存储在数组第1个位置的结点存在兄弟结点和两个子结点,则它的兄弟结点和右子结点的位置分别是( )。
二叉树的深度定义为从根结点到叶结点的最长路径上的结点数,则以下基于二叉树的深度优先搜索实现的深度计算函数中横线上应填写( )。
def max_depth(root_node):
if root_node is None:
return 0
else:
left_depth = max_depth(root_node.left)
right_depth = max_depth(root_node.right)
以下基于二叉树的搜索实现的高度计算函数中横线上应填写( )。
def height(root):
if root is None:
return 0
else:
left_height = height(root.left)
right_height = height(root.right)
二叉搜索树中的每个结点,其左子树的所有结点值都小于该结点值,右子树的所有结点值都大于该结点值。以下代码对给定的整数数组构造一个对应的二叉搜索树,横线上应填写(
class Solution:
def isValidBST(self, root):
def helper(node, min_val, max_val):
if not node:
return True
return False
return helper(node.left, min_val, node.val) and helper(node.right, node.val, max_val)
return helper(root, float('-inf'), float('inf'))
对上题中的二叉搜索树,当输入数组为[6,2,8,1,4,7,9]时,构建二叉搜索树,并采用中序遍历,得到的输出是( )。
动态规划通常用于解决( )。
阅读以下用动态规划解决的0-1背包问题,假设背包容量10kg,4个物品重量[1,3,4,6],价值[20,30,50,60],则函数输出为( )。
C++、Python和JAVA等都是面向对象的编程语言。( )
在Python中,类的静态成员变量只能被该类对象的成员函数访问。( )
栈和队列均可通过数组或链表来实现,其中数组实现支持随机访问、占用内存较少,但插入和删除元素效率低。( )
运行以下Python代码,屏幕将输出"derived class"。( )
class BaseClass:
def my_method(self):
print("base class")
class DerivedClass(BaseClass):
def my_method(self):
print("derived class")
derived_instance = DerivedClass()
derived_instance.my_method()
如下列代码所示的基类(Base)及其派生类(Derived),则生成一个派生类的对象时,只调用派生类的构造函数。( )
class Base:
def __init__(self):
print("Base.__init__ called")
class Derived(Base):
def __init__(self):
print("Derived.__init__ called")
super().__init__()
d = Derived()
哈夫曼编码本质上是一种贪心策略。( )
如果根结点的深度记为1,则一棵恰有n个叶结点的二叉树的深度最少是⌈log₂n⌉。( )
在非递归实现的树的广度优先搜索中,通常使用栈来辅助实现。( )
状态转移方程是动态规划的核心,可以通过递推方式表示问题状态的变化。( )
应用动态规划算法时,识别并存储重叠子问题的解是必须的。( )
小杨和整数拆分
时间限制:20.0 s
内存限制:512.0 MB
题面描述
小杨有一个正整数n,小杨想将它拆分成若干完全平方数的和,同时小杨希望拆分的数量越少越好。小杨请你编写程序计算出总和为n的完全平方数的最少数量。
第一行包含一个正整数n。
输出一个整数,代表总和为n的完全平方数的最少数量
样例 n=18,最少需要2个完全平方数:18=9+9。 数据范围 对于全部数据,保证有1 ≤ n ≤ 10⁴。
算法学习
时间限制:1.0 s
内存限制:512.0 MB
题面描述
小杨计划学习m种算法,为此他找了n道题目来帮助自己学习,每道题目至多学习一次。小杨对于m种算法的初始掌握程度均为0。第i道题目有对应的知识点aᵢ,即学习第i道题目可以令小杨对第aᵢ种算法的掌握程度提高bᵢ。小杨的学习目标是对m种算法的掌握程度均至少为k。小杨认为连续学习两道相同知识点的题目是不好的,小杨想请你编写程序帮他计算出他最少需要学习多少道题目才能使得他在完成学习目标的同时避免连续学习两道相同知识点的题目。
第一行三个正整数m, n, k。代表算法种类数,题目数和目标掌握程度 第二行n个正整数aᵢ。代表每道题目的知识点 第三行n个正整数bᵢ。代表每道题目提升的掌握程度
输出一个整数,代表小杨最少需要学习题目的数量,如果不存在满足条件的方案,输出-1。
<img src="/static/uploads/images/fc1b6f5d1b86.png" style="max-width:35%;border-radius:6px;margin:8px 0;" />