52.校學(xué)生會(huì)要從兩個(gè)候選人 A 和 B 中選舉一個(gè)會(huì)長,每個(gè)候選人都有自己的支持方。現(xiàn)在以一個(gè)基于輪為過程來進(jìn)行選舉,在每一輪選舉中,當(dāng)前成員可以禁止另一位成員的選舉權(quán),即讓另一位成員在這一輪和隨后的幾輪中都喪失選舉權(quán)。在選舉過程中一旦有選舉權(quán)的成員都來自同一個(gè)陣營,則該陣營勝利。
字母 A 和 B 分別代表兩位候選人,輸入一個(gè)字符串代表每個(gè)成員的陣營,例如輸入“ABB”,則輸出結(jié)果為 B,即候選人 B 為會(huì)長。
說明:第一輪中,第一個(gè)成員(A)可以讓第二個(gè)成員(B)失去選舉權(quán),第二個(gè)成員(B)會(huì)被跳過因?yàn)樗倪x舉權(quán)被禁止,第三個(gè)成員(B)可以讓第一個(gè)成員(A)失去選舉權(quán),因此在第二輪只剩下第三個(gè)成員(B)擁有選舉權(quán),則輸出結(jié)果為 B,即候選人 B 為會(huì)長。
(1)若輸入“ABABB”,則會(huì)長為
。
(2)實(shí)現(xiàn)上述功能的 Python 程序如下,請(qǐng)?jiān)跈M線處填入合適的代碼。
s=input(“請(qǐng)輸入投票字符串:“)
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“)