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