需求
- 需求:热土豆,即假如列表中有10个人[“aa”, “bb”, “cc”, “dd”, “ee”, “ff”, “gg”, “hh”, “ii”, “jj”], 每次把土豆传递5次,土豆在谁手上就把谁移除队列,直到队列中只有1人时返回这个人名
- 输入:name_list:人名列表, num:移动的次数
- 输出:最后的人名
代码示例
from test06_Queue.Queue import Queue
def hot_potato(name_list, num):
# 初始化队列
qu = Queue()
# 用队列保存人名
qu.items = name_list
# 把土豆移动转化为人移动,即传递一次把队首的人移动队尾,移动num次后删除队首的元素
while qu.size() > 1:
for i in range(int(num)): # 这里起到一个计数器的作用
qu.enqueue(qu.dequeue()) # 把队首移动到队尾
qu.dequeue() # 删除队首的元素
return qu.dequeue()
# 测试
name_list = ["aa", "bb", "cc", "dd", "ee", "ff", "gg", "hh", "ii", "jj"]
print(hot_potato(name_list, 5))
# 测试结果
cc