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异步任务队列示例
Apr 01 Python
python根据给定文件返回文件名和扩展名的方法
Mar 27 Python
你真的了解Python的random模块吗?
Dec 12 Python
python 将md5转为16字节的方法
May 29 Python
python实现播放音频和录音功能示例代码
Dec 30 Python
详解【python】str与json类型转换
Apr 29 Python
PyCharm安装Markdown插件的两种方法
Jun 24 Python
pygame实现打字游戏
Feb 19 Python
python针对Oracle常见查询操作实例分析
Apr 30 Python
使用OpenCV获取图片连通域数量,并用不同颜色标记函
Jun 04 Python
python中的split、rsplit、splitlines用法说明
Oct 23 Python
python3处理word文档实例分析
Dec 01 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
discuz图片顺序混乱解决方案
2015/07/29 PHP
php微信开发之自定义菜单完整流程
2016/10/08 PHP
用PHP去掉文件头的Unicode签名(BOM)方法
2017/06/22 PHP
javascript 屏蔽鼠标键盘的几段代码
2008/01/02 Javascript
jQuery EasyUI API 中文文档 - ComboBox组合框
2011/10/07 Javascript
js 实现菜单左右滚动显示示例介绍
2013/11/21 Javascript
js实现九宫格图片半透明渐显特效的方法
2015/02/16 Javascript
浅谈JavaScript异常处理语句
2015/06/26 Javascript
jQuery子元素过滤选择器用法示例
2016/09/09 Javascript
jquery将标签元素的高设为屏幕的百分比
2017/04/19 jQuery
JS实现获取图片大小和预览的方法完整实例【兼容IE和其它浏览器】
2017/04/24 Javascript
jQuery手风琴的简单制作
2017/05/12 jQuery
Vue2.0用户权限控制解决方案
2017/11/29 Javascript
Node.js笔记之process模块解读
2018/05/31 Javascript
Node.js搭建WEB服务器的示例代码
2018/08/15 Javascript
vue-cli2.0转3.0之项目搭建的详细步骤
2018/12/11 Javascript
Element UI框架中巧用树选择器的实现
2018/12/12 Javascript
微信小程序中使用echarts的实现方法
2019/04/24 Javascript
使用jQuery mobile NuGet让你的网站在移动设备上同样精彩
2019/06/18 jQuery
vue swipe自定义组件实现轮播效果
2019/07/03 Javascript
vue实现吸顶、锚点和滚动高亮按钮效果
2019/10/21 Javascript
js实现固定区域内的不重叠随机圆
2019/10/24 Javascript
js实现表格数据搜索
2020/08/09 Javascript
Tornado服务器中绑定域名、虚拟主机的方法
2014/08/22 Python
Python基于plotly模块实现的画图操作示例
2019/01/23 Python
深入解析HTML5中的Blob对象的使用
2015/09/08 HTML / CSS
怎样自定义一个异常类
2016/09/27 面试题
励志演讲稿范文
2014/04/29 职场文书
小学师德标兵先进事迹材料
2014/05/25 职场文书
标准大学生职业生涯规划书写作指南
2014/09/18 职场文书
个人四风问题对照检查材料思想汇报
2014/10/06 职场文书
机动车登记业务委托书
2014/10/08 职场文书
文艺节目主持词
2015/07/06 职场文书
酒店宣传语大全
2015/07/13 职场文书
银行安全保卫工作总结
2015/08/10 职场文书