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群发邮件实例代码
Jan 03 Python
Python使用Mechanize模块编写爬虫的要点解析
Mar 31 Python
Python BS4库的安装与使用详解
Aug 08 Python
使用python实现快速搭建简易的FTP服务器
Sep 12 Python
Python检查和同步本地时间(北京时间)的实现方法
Dec 03 Python
对Pycharm创建py文件时自定义头部模板的方法详解
Feb 12 Python
Python 实现输入任意多个数,并计算其平均值的例子
Jul 16 Python
python多线程实现TCP服务端
Sep 03 Python
python对一个数向上取整的实例方法
Jun 18 Python
Python实现给PDF添加水印的方法
Jan 25 Python
python spilt()分隔字符串的实现示例
May 21 Python
python模板入门教程之flask Jinja
Apr 11 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
一条久听不愿放下的DIY森海MX500,三言两语话神奇
2021/03/02 无线电
探讨:如何通过stats命令分析Memcached的内部状态
2013/06/14 PHP
PHP用strstr()函数阻止垃圾评论(通过判断a标记)
2013/09/28 PHP
PHP把网页保存为word文件的三种方法
2014/04/01 PHP
纯PHP生成的一个树叶图片画图例子
2014/04/16 PHP
php设计模式之策略模式应用案例详解
2019/06/17 PHP
PHP7.0连接DB操作实例分析【基于mysqli】
2019/09/26 PHP
一份老外写的XMLHttpRequest代码多浏览器支持兼容性
2007/01/11 Javascript
Javascript中的isNaN函数使用说明
2011/11/10 Javascript
jQuery的Ajax的自动完成功能控件简要说明
2013/02/22 Javascript
中文路径导致unitpngfix.js不正常的解决方法
2013/06/26 Javascript
jquery中的查找parents与closest方法之间的区别
2013/12/02 Javascript
调试代码导致IE出错的避免方法
2014/04/04 Javascript
Jquery动态添加及删除页面节点元素示例代码
2014/06/16 Javascript
让checkbox不选中即将选中的checkbox不选中
2014/07/11 Javascript
JQuery中绑定事件(bind())和移除事件(unbind())
2015/02/27 Javascript
javascript运动详解
2015/07/06 Javascript
谈谈Jquery ajax中success和complete有哪些不同点
2015/11/20 Javascript
JavaScript数据绑定实现一个简单的 MVVM 库
2016/04/08 Javascript
如何通过非数字与字符的方式实现PHP WebShell详解
2017/07/02 Javascript
vue父组件通过props如何向子组件传递方法详解
2017/08/16 Javascript
Angular5升级RxJS到5.5.3报错:EmptyError: no elements in sequence的解决方法
2018/04/09 Javascript
Javascript中弹窗confirm与prompt的区别
2018/10/26 Javascript
小程序角标的添加及绑定购物车数量进行实时更新的实现代码
2020/12/07 Javascript
python实现的系统实用log类实例
2015/06/30 Python
浅谈Python的Django框架中的缓存控制
2015/07/24 Python
Python开发网站目录扫描器的实现
2019/02/21 Python
在Python中等距取出一个数组其中n个数的实现方式
2019/11/27 Python
PyInstaller运行原理及常用操作详解
2020/06/13 Python
英国计算机产品零售商:Novatech(定制个人电脑、笔记本电脑、工作站和服务器)
2018/01/28 全球购物
Lookfantastic葡萄牙官方网站:欧洲第一大化妆品零售商
2018/03/17 全球购物
党支部书记先进事迹
2014/01/17 职场文书
个人简历中自我评价
2014/02/11 职场文书
党员公开承诺书和承诺事项
2014/03/25 职场文书
解决Django transaction进行事务管理踩过的坑
2021/04/24 Python
Nginx反向代理至go-fastdfs案例讲解
2021/08/02 Servers