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爬虫神器Beautiful Soup用法
Jan 20 Python
Python中格式化format()方法详解
Apr 01 Python
python处理csv中的空值方法
Jun 22 Python
python文件选择对话框的操作方法
Jun 27 Python
python脚本当作Linux中的服务启动实现方法
Jun 28 Python
Django框架视图介绍与使用详解
Jul 18 Python
python使用原始套接字发送二层包(链路层帧)的方法
Jul 22 Python
Django使用Jinja2模板引擎的示例代码
Aug 09 Python
docker django无法访问redis容器的解决方法
Aug 21 Python
python3+opencv生成不规则黑白mask实例
Feb 19 Python
pytorch 实现变分自动编码器的操作
May 24 Python
Python数据处理的三个实用技巧分享
Apr 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
escape unescape的php下的实现方法
2007/04/27 PHP
微信公众号开发之语音消息识别php代码
2016/08/08 PHP
PHP判断表达式中括号是否匹配的简单实例
2016/10/22 PHP
PHP排序算法之冒泡排序(Bubble Sort)实现方法详解
2018/04/20 PHP
JavaScript CSS修改学习第二章 样式
2010/02/19 Javascript
JavaScript聚焦于第一个字段的代码
2010/10/15 Javascript
ie支持function.bind()方法实现代码
2012/12/27 Javascript
JavaScript 函数惰性载入的实现及其优点介绍
2013/08/12 Javascript
jquery统计输入文字的个数并对其进行判断
2014/01/07 Javascript
jquery判断密码强度的验证代码
2020/04/22 Javascript
js去字符串前后空格的实现方法
2016/02/26 Javascript
Node.js通过身份证号验证年龄、出生日期与性别方法示例
2017/03/09 Javascript
bootstrap3使用bootstrap datetimepicker日期插件
2017/05/24 Javascript
Angular 4环境准备与Angular cli创建项目详解
2017/05/27 Javascript
Angularjs在360兼容模式下取数据缓存问题的解决办法
2017/06/22 Javascript
jQuery滑动效果实现方法分析
2018/09/05 jQuery
javascript关于“时间”的一次探索
2019/07/24 Javascript
详解mpvue开发微信小程序基础知识
2019/09/23 Javascript
vue项目中监听手机物理返回键的实现
2020/01/18 Javascript
JQuery省市联动效果实现过程详解
2020/05/08 jQuery
Python编码时应该注意的几个情况
2013/03/04 Python
跟老齐学Python之for循环语句
2014/10/02 Python
在Python中使用正则表达式的方法
2015/08/13 Python
python3读取MySQL-Front的MYSQL密码
2017/05/03 Python
pandas带有重复索引操作方法
2018/06/08 Python
python中dir()与__dict__属性的区别浅析
2018/12/10 Python
Pytorch 多维数组运算过程的索引处理方式
2019/12/27 Python
什么是跨站脚本攻击
2014/12/11 面试题
市场部专员岗位职责
2013/11/30 职场文书
毕业生自我鉴定实例
2014/01/21 职场文书
鼓励运动员的广播稿
2014/02/08 职场文书
订货会邀请函
2015/01/31 职场文书
2015年技术工作总结范文
2015/04/20 职场文书
Matlab如何实现矩阵复制扩充
2021/06/02 Python
Python趣味实战之手把手教你实现举牌小人生成器
2021/06/07 Python
python manim实现排序算法动画示例
2022/08/14 Python