队列实现约瑟夫问题

2020-02-20  本文已影响0人  清水秋香
from pythonds.basic.queue import Queue
def hotPotato(namelist,num):
    simqueue = Queue()
    for name in namelist:
        simqueue.enqueue(name)
    while simqueue.size() > 1:
        for i in range(num):
            #把人取出来添加到队尾
            simqueue.enqueue(simqueue.dequeue())
        #队首为持有土豆的人,把他提出去
        simqueue.dequeue()
    # 剩下最后一个人
    return simqueue.dequeue()

print(hotPotato(["Bill",'David','susan','jane','kent','brad'],7))
上一篇下一篇

猜你喜欢

热点阅读