A31653. 约瑟夫环2024年春节联欢晚会上,刘谦表演了一个纸牌魔术,深受观众欢迎。这个魔术的内容其实是一个经典的约瑟夫环问题,相当于n张牌形成一个环,依次循环报数,每次报到m的那一张牌扔掉,直到剩下最后一张牌。小智编写了以下程序来模拟8张牌的淘汰过程,请补充完成该程序。def Josephus(num,gap): location_list = [a for a in range(1,num+1)] if…
填空题
较难
知识点
题目描述
约瑟夫环
2024年春节联欢晚会上,刘谦表演了一个纸牌魔术,深受观众欢迎。这个魔术的内容其实是一个经典的约瑟夫环问题,相当于n张牌形成一个环,依次循环报数,每次报到m的那一张牌扔掉,直到剩下最后一张牌。小智编写了以下程序来模拟8张牌的淘汰过程,请补充完成该程序。
def Josephus(num,gap):
location_list = [a for a in range(1,num+1)]
if num == 1 :
①
else:
index = 0
for i in ② :
index = (index + gap - 1 )% ③
print("本次淘汰的牌为:",location_list[index])
del location_list[index]
print( "最后剩下的牌为:",location_list[ ④ ])
Josephus(8,2)
参考答案
def Josephus(num,gap):
location_list = [a for a in range(1,num+1)]
if num == 1 :
return
else:
index = 0
for i in range(num-1):
index = (index + gap - 1 )%len(location_list)
print("本次淘汰的牌为:",location_list[index])
del location_list[index]
print( "最后剩下的牌为:",location_list[0])
Josephus(8,2)答案解析
(1)return 或等效答案;(2分)
(2)range(num-1) 或等效答案;(4分)
(3)len(location_list) 或等效答案;(4分)
(4)0 或等效答案。(2分)
上一题
下一题