306 约瑟夫问题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)
小结 #
习题 #
- 思考还可以怎么求解约瑟夫问题
- 自己编写一遍约瑟夫问题的求解