用队列解决约瑟夫环问题:
这个问题的意思为:有一个队伍,第一个人从队首出去之后又回到了队尾,直到规定的循环次数用完
下面展示一些 内联代码片
。
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))