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发送arp欺骗攻击代码分析
Jan 16 Python
Python Web服务器Tornado使用小结
May 06 Python
python动态性强类型用法实例
May 09 Python
python实现马耳可夫链算法实例分析
May 20 Python
python使用MySQLdb访问mysql数据库的方法
Aug 03 Python
Python缩进和冒号详解
Jun 01 Python
详解python的ORM中Pony用法
Feb 09 Python
利用Python半自动化生成Nessus报告的方法
Mar 19 Python
python实现通过队列完成进程间的多任务功能示例
Oct 28 Python
tensorflow 限制显存大小的实现
Feb 03 Python
Python Handler处理器和自定义Opener原理详解
Mar 05 Python
Python matplotlib画图时图例说明(legend)放到图像外侧详解
May 16 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使用数组实现队列
2012/02/05 PHP
Joomla调用系统自带编辑器的实现方法
2016/05/05 PHP
Laravel自定义 封装便捷返回Json数据格式的引用方法
2019/09/29 PHP
张孝祥JavaScript学习阶段性总结(2)--(X)HTML学习
2007/02/03 Javascript
JS实现金额转换(将输入的阿拉伯数字)转换成中文的实现代码
2013/09/30 Javascript
js创建一个input数组并绑定click事件的方法
2014/06/12 Javascript
javascript实现图片上传前台页面
2015/08/18 Javascript
JavaScript实现水平进度条拖拽效果
2017/01/18 Javascript
jQuery实现标签页效果实战(4)
2017/02/08 Javascript
JavaScript正则替换HTML标签功能示例
2017/03/02 Javascript
浅谈在fetch方法中添加header后遇到的预检请求问题
2017/08/31 Javascript
浅谈Vue.js 组件中的v-on绑定自定义事件理解
2017/11/17 Javascript
Vue中使用Sortable的示例代码
2018/04/07 Javascript
vue 表单输入格式化中文输入法异常问题
2018/05/30 Javascript
vue配置font-awesome5的方法步骤
2019/01/27 Javascript
微信小程序入口场景的问题集合与相关解决方法
2019/06/26 Javascript
微信小程序图片加载失败时替换为默认图片的方法
2019/12/09 Javascript
js实现简单的秒表
2020/01/16 Javascript
微信小程序动态评分展示/五角星展示/半颗星展示/自定义长度展示功能的实现
2020/07/22 Javascript
[58:42]DOTA2上海特级锦标赛C组败者赛 Newbee VS Archon第一局
2016/02/27 DOTA
python文件比较示例分享
2014/01/10 Python
python实现的简单FTP上传下载文件实例
2015/06/30 Python
详解Python各大聊天系统的屏蔽脏话功能原理
2016/12/01 Python
Python向MySQL批量插数据的实例讲解
2018/03/31 Python
python打包压缩、读取指定目录下的指定类型文件
2018/04/12 Python
Python中判断子串存在的性能比较及分析总结
2019/06/23 Python
Anaconda3+tensorflow2.0.0+PyCharm安装与环境搭建(图文)
2020/02/18 Python
Django serializer优化类视图的实现示例
2020/07/16 Python
Html5+CSS3+EL表达式问题小结
2020/12/19 HTML / CSS
洗煤厂厂长岗位职责
2014/01/03 职场文书
幼儿运动会邀请函
2014/01/17 职场文书
市级青年文明号申报材料
2014/05/26 职场文书
诚实守信主题班会
2015/08/13 职场文书
Django使用channels + websocket打造在线聊天室
2021/05/20 Python
SpringBoot SpringEL表达式的使用
2021/07/25 Java/Android