用队列解决约瑟夫环问题:


这个问题的意思为:有一个队伍,第一个人从队首出去之后又回到了队尾,直到规定的循环次数用完

下面展示一些 内联代码片。
class Queue:
def __init__(self):
self.items=[]
def isEmpty(self):
return self.items==[]
def enqueue(self,item):
self.items.insert(0,item)
def dequeue(self):
return self.items.pop()
def size(self):
return len(self.items)
#约瑟夫环问题
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(['小张','小王','小李'],3))
使用队列解决约瑟夫环问题的Python实现
本文介绍了如何运用队列数据结构来解决经典的约瑟夫环问题。通过创建一个模拟队列,并设定特定的循环次数,代码演示了如何在队列中移除元素并重新插入,直至队列只剩下一个元素。这个过程模拟了人员在环形队伍中依次淘汰的过程。
953

被折叠的 条评论
为什么被折叠?



