Python之队列模拟算法(烫手山芋问题)
2019-04-15 11:30
281 查看
烫手山芋即击鼓传花,7人传山芋,叫到7的人退出,直到最后一人。
完整代码:
# 自定义队列类 class Queue(object): def __init__(self): #初始化空队列 self.items = [] def isEmpty(self): #是否为空 return self.items == [] def enqueue(self, item): #入队,索引为0,即队尾在左侧 self.items.insert(0,item) def dequeue(self): #出队,列表最后一个,即队首在右侧 return self.items.pop() def size(self): #查看队列的大小 return len(self.items) # 烫手山芋函数 def hotPotato(name, num): queue = Queue() #队列为["Brad","Kent","Jane","Susan","David","Bill"] [queue.enqueue(i) for i in name] #全部入队后队列中顺序与name_list完全相反 while queue.size() > 1: #队列中超过1人,则继续淘汰 [queue.enqueue(queue.dequeue()) for n in range(1, num)] #说1-6的人都排到队尾 queue.dequeue() #说7的人出队淘汰,继续循环 return queue.dequeue() #出队,最后一人 name_list = ["Bill","David","Susan","Jane","Kent","Brad"] print(hotPotato(name_list,7))
结果为:
Kent
相关文章推荐
- 2.Python数据结构及算法----队列
- 基于三级反馈队列调度算法的UNIX进程管理程序模拟
- 贪心算法之钓鱼问题(python实现)
- python实现:字符串排序问题(快手2019年秋季校园招聘编程题算法B试卷(牛客网))
- Python解决走迷宫问题算法示例
- 【算法学习笔记】54.约瑟夫问题 模拟、逆推动规 SJTU OJ 1038 二哥的约瑟夫
- python 利用栈和队列模拟递归的过程
- 数据结构队列 离散事件模拟 银行排队问题
- 用队列模拟jquery的动画算法实例
- 这都不会,还学什么Python?利用栈和队列模拟递归
- HDU 4841 圆桌问题(约瑟夫环队列模拟)
- 经典算法问题:“this is a test” 逆序输出为“test a is this”.使用Python实现
- 算法基础之python实现深度优先搜索的数独问题
- 用Python实现的数据结构与算法:队列
- 0/1背包问题算法的python实现
- 数据结构_队列-循环队列实现模拟舞伴配对问题
- 用队列模拟jquery的动画算法
- 使用Lock与ReentrantLock模拟消息队列阻塞,生产与消费问题模拟
- python 版 动态规划 背包问题算法
- hdoj--1276--士兵队列训练问题(数组模拟)