#约瑟夫问题 #约瑟夫环 #丢手绢

133 阅读1分钟

问题:

几个人围成一圈,依次编号为1、2、3、4、5……。

第一个人报“1”,留下;下一个人报“2”,出局;再下一个人报“1”,留下;再下一个人报“2”,出局……最后只留下一个人。

求最后这个人的编号。

Python模拟:以5个人为例。

玩家集合 = ['玩家' + str(编号) for 编号 in range(1, 6)]  # 生成玩家集合
print(玩家集合)  # 打印玩家集合
指针 = 0
while len(玩家集合) > 1:
    print(玩家集合[指针] + '报1,留下')
    指针 = (指针 + 1) % len(玩家集合)
    print(玩家集合[指针] + '报2,出局')
    玩家集合.pop(指针)  # 出局
print('------胜利者是' + 玩家集合[0] + '------')