Python数据结构与算法之使用队列解决小猫钓鱼问题


Posted in Python onDecember 14, 2017

本文实例讲述了Python数据结构与算法之使用队列解决小猫钓鱼问题。分享给大家供大家参考,具体如下:

按照《啊哈》里的思路实现这道题目,但是和结果不一样,我自己用一幅牌试了一下,发现是我的结果像一点,可能我理解的有偏差。

# 小猫钓鱼
# 计算桌上每种牌的数量
# 使用defaultdict类,并设置默认类型为int型,即默认值为0
# cardcounts = defaultdict(int)
# 不过deque有对应的方法
def henhenhaahaa():
  from collections import deque
  hen = deque()      # hen的手牌
  haa = deque()      # haa的手牌
  table = deque()     # 桌上的牌
  # 手扎初始化
  for card in [2,4,1,2,5,6]:
    hen.append(card)
  for card in [3,1,3,5,6,4]:
    haa.append(card)
  # 当两个人的手牌都不为零食,游戏继续
  # 如果某人打出的牌与桌上的某张牌相同
  # 即可将两张牌以及中间的所有牌以此取走
  # 由于桌上同样的牌不可能超过两张
  # 只要计算目标牌的数量,以此取回即可
  # 刷新桌上的牌(打出牌,取牌)
  def refreshtable(person, card):
    table.append(card)
    if table.count(card)>=2:
      while table.count(card)>0:
        person.append(table.pop())
  while len(hen)!=0 and len(haa)!=0:
#     print "tab:",list(table)
    i = hen.popleft()        # hen先出牌
#     print "hen put",i
    refreshtable(hen, i)      # hen动作
#     print "hen:",list(hen)
#     print "tab:",list(table)
    j = haa.popleft()        # haa后出牌
#     print "haa put",j
    refreshtable(haa, j)      # haa动作
#     print "haa:",list(haa)
#     print "tab:",list(table)
#     print "next turn"
  if len(hen)!=0:
    print "hen win"
    print "hen:",list(hen)
  else:
    print "haa win"
    print "haa:",list(haa)
  print "ontables"
  print "tab:",list(table)
if __name__=="__main__":
  print "三水点靠木测试结果:"
  henhenhaahaa()
  # 我自己手动用牌模拟的结果根本就和书上不一样
  # 我觉得我自己的答案没啥问题
  # 单步模拟的结果也是一样的

运行结果:

Python数据结构与算法之使用队列解决小猫钓鱼问题

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python中lambda与def用法对比实例分析
Apr 30 Python
Python+tkinter使用80行代码实现一个计算器实例
Jan 16 Python
pandas 取出表中一列数据所有的值并转换为array类型的方法
Apr 11 Python
python 处理数字,把大于上限的数字置零实现方法
Jan 28 Python
python实现雪花飘落效果实例讲解
Jun 18 Python
Python-Seaborn热图绘制的实现方法
Jul 15 Python
python使用pandas处理excel文件转为csv文件的方法示例
Jul 18 Python
Python 实现加密过的PDF文件转WORD格式
Feb 04 Python
Python更改pip镜像源的方法示例
Dec 01 Python
Python操作PostgreSql数据库的方法(基本的增删改查)
Dec 29 Python
python 解决微分方程的操作(数值解法)
May 26 Python
python单元测试之pytest的使用
Jun 07 Python
python实现BackPropagation算法
Dec 14 #Python
python实现随机梯度下降(SGD)
Mar 24 #Python
Python实现将一个正整数分解质因数的方法分析
Dec 14 #Python
Python随机生成均匀分布在三角形内或者任意多边形内的点
Dec 14 #Python
rabbitmq(中间消息代理)在python中的使用详解
Dec 14 #Python
用python的requests第三方模块抓取王者荣耀所有英雄的皮肤实例
Dec 14 #Python
用Python删除本地目录下某一时间点之前创建的所有文件的实例
Dec 14 #Python
You might like
用PHP来写记数器(详细介绍)
2006/10/09 PHP
PHP大批量数据操作时临时调整内存与执行时间的方法
2011/04/20 PHP
分享一下贝贝成长进度的php代码
2012/09/14 PHP
Yii2框架dropDownList下拉菜单用法实例分析
2016/07/18 PHP
一个选择最快的服务器转向代码
2009/04/27 Javascript
jquery 选择器引擎sizzle浅析
2013/02/06 Javascript
js借助ActiveXObject实现创建文件
2013/09/29 Javascript
JavaScript删除数组元素的方法
2015/03/20 Javascript
JavaScript表单验证实例之验证表单项是否为空
2016/01/10 Javascript
微信小程序 绘图之饼图实现
2016/10/24 Javascript
利用CSS、JavaScript及Ajax实现图片预加载的三大方法
2017/01/22 Javascript
基于Marquee.js插件实现的跑马灯效果示例
2017/01/25 Javascript
Javascript类型判断相关例题及解析
2020/08/26 Javascript
[49:08]FNATIC vs Infamous 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
Python写的一个简单监控系统
2015/06/19 Python
Face++ API实现手势识别系统设计
2018/11/21 Python
python3实现网络爬虫之BeautifulSoup使用详解
2018/12/19 Python
Pycharm远程调试原理及具体配置详解
2019/08/08 Python
Django微信小程序后台开发教程的实现
2020/06/03 Python
python爬虫scrapy基本使用超详细教程
2021/02/20 Python
从Pytorch模型pth文件中读取参数成numpy矩阵的操作
2021/03/04 Python
纽约通行卡:The New York Pass(免费游览纽约90多个景点)
2017/07/29 全球购物
详解如何解决使用JSON.stringify时遇到的循环引用问题
2021/03/23 Javascript
旷课检讨书3000字
2014/02/04 职场文书
网络研修随笔感言
2014/02/17 职场文书
大学生社会实践自我鉴定
2014/03/24 职场文书
“向国旗敬礼”主题班会活动设计方案
2014/09/27 职场文书
综合测评自我评价
2015/03/06 职场文书
刘胡兰观后感
2015/06/16 职场文书
师范生见习自我总结
2015/06/23 职场文书
2015大学党建带团建工作总结
2015/07/23 职场文书
2016年国培研修日志
2015/11/13 职场文书
祝福语集锦:给妹妹结婚的祝福语
2019/12/18 职场文书
python中Tkinter 窗口之输入框和文本框的实现
2021/04/12 Python
关于nginx 实现jira反向代理的问题
2021/09/25 Servers
PostgreSQL逻辑复制解密原理解析
2022/09/23 PostgreSQL