浙教版(2019)選修1《3.2 隊列-3.3 棧》2022年同步練習(xí)卷
發(fā)布:2024/4/20 14:35:0
一、選擇題
-
1.下列關(guān)于數(shù)據(jù)結(jié)構(gòu)的說法,正確的是( ?。?/h2>
組卷:24引用:3難度:0.5 -
2.用python列表模擬隊列,并設(shè)置隊首指針head指向隊首元素,隊尾指針tail指向隊尾元素的下一個位置,則當head=3,tail=6時,隊列中元素的個數(shù)為( ?。?/h2>
組卷:3引用:3難度:0.5 -
3.用python列表模擬循環(huán)隊列,并設(shè)置隊首指針head指向隊首元素,隊尾指針指向隊尾元素的下一個位置,則當列表長度n=10,head=6,tail=3時,隊列中元素的個數(shù)為( )
組卷:3引用:3難度:0.3
二、非選擇題
-
8.校學(xué)生會要從兩個候選人 A 和 B 中選舉一個會長,每個候選人都有自己的支持方?,F(xiàn)在以一個基于輪為過程來進行選舉,在每一輪選舉中,當前成員可以禁止另一位成員的選舉權(quán),即讓另一位成員在這一輪和隨后的幾輪中都喪失選舉權(quán)。在選舉過程中一旦有選舉權(quán)的成員都來自同一個陣營,則該陣營勝利。
字母 A 和 B 分別代表兩位候選人,輸入一個字符串代表每個成員的陣營,例如輸入“ABB”,則輸出結(jié)果為 B,即候選人 B 為會長。
說明:第一輪中,第一個成員(A)可以讓第二個成員(B)失去選舉權(quán),第二個成員(B)會被跳過因為他的選舉權(quán)被禁止,第三個成員(B)可以讓第一個成員(A)失去選舉權(quán),因此在第二輪只剩下第三個成員(B)擁有選舉權(quán),則輸出結(jié)果為 B,即候選人 B 為會長。
(1)若輸入“ABABB”,則會長為
(2)實現(xiàn)上述功能的 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.小趙同學(xué)在某游戲平臺中獲得虛擬的食物、裝備、材料等物品,他們分別有不同的價值,現(xiàn)游戲平臺有兌換機制,即可用多個不同物品換取一個等值的物品(每個物品只能取一樣),如圖1為小趙同學(xué)已獲得的物品。
如要換取游戲中的物品“破天錘”,需要 35 個金幣,有多種的置換方式,為方便計算以節(jié)省時間,小趙同學(xué)編寫了如下程序,運行界面如圖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(“,“)#將輸入的內(nèi)容以“,”作分隔,并轉(zhuǎn)換為列表
print(“依次拿取物品序號的方案有:“)
exchange(m,p)組卷:1引用:1難度:0.3