Python使用队列实现Josephus问题

Josephus问题,在这个古老的问题中,N个深陷绝境的人一致同意通过以下方式减少生存的人数。他们围坐一圈(位置记为0~N-1)并从第一个人报数,报到M的人会被杀死,

知道最后一个人留下来。传说中Josephus找到了不会被杀死的位置。

接收N和M的值,打印出被杀死的顺序:

if name == “main”:
num_people = int(input(“深陷绝境的人数:”))
num_kill = int(input(“死亡数字:”))
i = 1
people_list = []
for j in range(num_people):
people_list.append(j)

while 1:
    if len(people_list) == 1:
        print("  " , people_list.pop(), "live")
        break

    first_person = people_list.pop(0)

    if i != num_kill:
        people_list.append(first_person)
    else:
        i = 0
        print(first_person, end=" ")

    i += 1

你可能感兴趣的:(编程,程序员,Python)