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之私有函数和专有方法
Oct 24 Python
一些Python中的二维数组的操作方法
May 02 Python
python实现搜索指定目录下文件及文件内搜索指定关键词的方法
Jun 28 Python
windows下安装Python的XlsxWriter模块方法
May 03 Python
Python实现二叉树的常见遍历操作总结【7种方法】
Mar 06 Python
Python read函数按字节(字符)读取文件的实现
Jul 03 Python
Python中list的交、并、差集获取方法示例
Aug 01 Python
python中的&&及||的实现示例
Aug 07 Python
python实现画出e指数函数的图像
Nov 21 Python
Python使用ElementTree美化XML格式的操作
Mar 06 Python
python中的socket实现ftp客户端和服务器收发文件及md5加密文件
Apr 01 Python
Python collections.deque双边队列原理详解
Oct 05 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
基于HBase Thrift接口的一些使用问题及相关注意事项的详解
2013/06/03 PHP
用Zend Studio+PHPnow+Zend Debugger搭建PHP服务器调试环境步骤
2014/01/19 PHP
php实现以只读方式打开文件的方法
2015/03/16 PHP
WordPress中用于获取文章作者与分类信息的方法整理
2015/12/17 PHP
YII使用url组件美化管理的方法
2015/12/28 PHP
PHP 实现页面静态化的几种方法
2017/07/23 PHP
ThinkPHP5 验证器的具体使用
2018/05/31 PHP
广告代码静态化js通用函数
2007/05/09 Javascript
Javascript 写的简单进度条控件
2008/01/22 Javascript
JavaScript中各种编码解码函数的区别和注意事项
2010/08/19 Javascript
js螺旋动画效果的具体实例
2013/11/15 Javascript
Node调试工具JSHint的安装及配置教程
2014/05/27 Javascript
JQuery通过AJAX从后台获取信息显示在表格上并支持行选中
2015/09/15 Javascript
Angularjs中如何使用filterFilter函数过滤
2016/02/06 Javascript
JQuery DIV 动态隐藏和显示的方法
2016/06/23 Javascript
JS快速实现移动端拼图游戏
2016/09/05 Javascript
原生js 封装get ,post, delete 请求的实例
2017/08/11 Javascript
Vue.js仿微信聊天窗口展示组件功能
2017/08/11 Javascript
浅谈vuejs实现数据驱动视图原理
2018/02/23 Javascript
vue兄弟组件传递数据的实例
2018/09/06 Javascript
Python isinstance判断对象类型
2008/09/06 Python
python读取TXT到数组及列表去重后按原来顺序排序的方法
2015/06/26 Python
对python 树状嵌套结构的实现思路详解
2019/08/09 Python
python使用正则表达式(Regular Expression)方法超详细
2019/12/30 Python
解决Python logging模块无法正常输出日志的问题
2020/02/21 Python
Python通过两个dataframe用for循环求笛卡尔积
2020/04/29 Python
基于Python爬虫采集天气网实时信息
2020/06/05 Python
Matlab中plot基本用法的具体使用
2020/07/17 Python
浅析HTML5 Landmark
2020/09/11 HTML / CSS
在线购买澳大利亚设计师手拿包和奢华晚装手袋:Olga Berg
2019/03/20 全球购物
大学毕业感言100字
2014/02/03 职场文书
教师爱岗敬业演讲稿
2014/05/05 职场文书
安全施工标语
2014/06/07 职场文书
升学宴答谢词
2015/01/05 职场文书
幼儿园大班教育随笔
2015/08/14 职场文书
七年级之开学家长寄语35句
2019/09/05 职场文书