约瑟夫问题:有x个人围成一圈,从某个人开始报数,报到y数的人自杀,然后从死掉的这个人的下一个人开始重新报数,循环往复,一直到剩下一个人。
class Queue(): # 使用python内置的list,实现简单的队列 def __init__(self): self.queue = [] def inqueue(self,item): # 入队 self.queue.append(item) def outqueue(self): # 出队 poped = self.queue.pop(0) return poped def size(self): # 队列大小 return len(self.queue) def __str__(self): # 打印队列(打印一个对象时,会打印它的__str__函数的返回值。) return repr(self.queue) def yue(list,num): queue = Queue() for li in list: queue.inqueue(li) print(queue) # 打印初始队列 while queue.size() > 1: # 只要队列人数大于一 for i in range(num-1): # 循环num-1个数 queue.inqueue(queue.outqueue()) # 队首的人拍到队尾 print(queue) queue.outqueue() # 数到num的人出队死掉了 return queue.outqueue() print(yue(['a','b','c'],3))