浙教版(2019)选修1《3.2 队列-3.3 栈》2022年同步练习卷
发布:2024/4/20 14:35:0
一、选择题
-
1.下列关于数据结构的说法,正确的是( )
组卷:28引用:3难度:0.5 -
2.用python列表模拟队列,并设置队首指针head指向队首元素,队尾指针tail指向队尾元素的下一个位置,则当head=3,tail=6时,队列中元素的个数为( )
组卷:3引用:3难度:0.5 -
3.用python列表模拟循环队列,并设置队首指针head指向队首元素,队尾指针指向队尾元素的下一个位置,则当列表长度n=10,head=6,tail=3时,队列中元素的个数为( )
组卷:3引用:3难度:0.3
二、非选择题
-
8.校学生会要从两个候选人 A 和 B 中选举一个会长,每个候选人都有自己的支持方。现在以一个基于轮为过程来进行选举,在每一轮选举中,当前成员可以禁止另一位成员的选举权,即让另一位成员在这一轮和随后的几轮中都丧失选举权。在选举过程中一旦有选举权的成员都来自同一个阵营,则该阵营胜利。
字母 A 和 B 分别代表两位候选人,输入一个字符串代表每个成员的阵营,例如输入“ABB”,则输出结果为 B,即候选人 B 为会长。
说明:第一轮中,第一个成员(A)可以让第二个成员(B)失去选举权,第二个成员(B)会被跳过因为他的选举权被禁止,第三个成员(B)可以让第一个成员(A)失去选举权,因此在第二轮只剩下第三个成员(B)拥有选举权,则输出结果为 B,即候选人 B 为会长。
(1)若输入“ABABB”,则会长为
(2)实现上述功能的 Python 程序如下,请在横线处填入合适的代码。
s=input(“请输入投票字符串:“)
queA=[“”]*100;queB=[“”]*100
headA=headB=0
tailA=tailB=0
n=len(s)
for i in range(n):
if ①
queA[tailA]=i
tailA+=1
else:
queB[tailB]=i
tailB+=1
while②
if queA[headA]<queB[headB]:
queA[tailA]=queA[headA]+n
tailA+=1
else:
queB[tailB]=queB[headB]+n
tailB+=1
headA+=1;headB+=1
if ③
print(“B“)
else:
print(“A“)组卷:2引用:1难度:0.3 -
9.小赵同学在某游戏平台中获得虚拟的食物、装备、材料等物品,他们分别有不同的价值,现游戏平台有兑换机制,即可用多个不同物品换取一个等值的物品(每个物品只能取一样),如图1为小赵同学已获得的物品。
如要换取游戏中的物品“破天锤”,需要 35 个金币,有多种的置换方式,为方便计算以节省时间,小赵同学编写了如下程序,运行界面如图2,运行代码如下,请在横线处填人合适的代码。
def exchange(t,pricelist):
n=len(pricelist)
stack=[]
i=0
num=0
while①
while t>0 and i<n:
if t>=int(pricelist[i]):
stack.jye.ai(i)
②
i+=1
if t==0:
print(“取序号为“,stack,“的物品“)
num+=1
if③
i=stack.jye.ai
t+=int(pricelist[i])
④
if num==0:
print(“无方案“)
m=int(input(“目标置换物品的价值:“))
price=input(“已获得物品价值依次是:“)
p=price.jye.ai(“,“)#将输入的内容以“,”作分隔,并转换为列表
print(“依次拿取物品序号的方案有:“)
exchange(m,p)组卷:1引用:1难度:0.3