热土豆问题&&打印任务
一、热土豆问题描述:
一群人中有一个热土豆,每次传固定次数,最后拿到的出局,然后从下一个继续传直到剩下一个人为止。
二、程序代码:
#定义队列:list 的首段为队尾
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):
# nameList为名单列表,num为每次土豆的传递次数
queue = Queue()
# 人名入队
for name in nameList:
queue.enqueue(name)
while queue.size() > 1:
# 土豆在人们之间传递
for i in range(num):
queue.enqueue(queue.dequeue())
# 一次传递结束后,将最终在队首的人弹出。
queue.dequeue()
# 传递结束,此时队内只剩下一人,弹出。
return queue.dequeue()