跳至正文
View Categories

< 1 min read

306 约瑟夫问题2 #

  1. 循环队列的模拟
  2. 约瑟夫问题求解

循环队列的模拟 #

python内置了队列Queue, 可以方便的使用它来模拟循环队列,注意对Queue而言,get即是出队,put即为入队
q = Queue()
for i in range(m-1):
    cur = q.get() # 出队列
    q.put(cur) # 重新入队列

约瑟夫问题求解 #

使用Queue获得一个队列,模拟约瑟夫问题的过程,下面是完整的实现,输出为出队的顺序
from queue import Queue

def josepRing(nums, m):
    q = Queue()
    for i in nums:
        q.put(i)       
    while not q.empty():
        for i in range(m-1):
            cur = q.get()
            q.put(cur)     # 重新入队列     
        print(q.get())   # 打印出队列
josepRing([1, 2, 3, 4, 5], 5)

小结 #

  • 掌握循环队列的模拟
  • 掌握约瑟夫问题的求解
  • 习题 #

    1. 思考还可以怎么求解约瑟夫问题
    2. 自己编写一遍约瑟夫问题的求解