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 translator使用实例
Sep 06 Python
通过源码分析Python中的切片赋值
May 08 Python
Python tkinter事件高级用法实例
Jan 31 Python
python+POP3实现批量下载邮件附件
Jun 19 Python
Python合并同一个文件夹下所有PDF文件的方法
Mar 11 Python
python实现比较类的两个instance(对象)是否相等的方法分析
Jun 26 Python
对tensorflow 中tile函数的使用详解
Feb 07 Python
Python Excel vlookup函数实现过程解析
Jun 22 Python
pytorch判断是否cuda 判断变量类型方式
Jun 23 Python
用Python 爬取猫眼电影数据分析《无名之辈》
Jul 24 Python
python批量修改文件名的示例
Sep 27 Python
如何通过Python实现RabbitMQ延迟队列
Nov 28 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
DC的38部超级英雄动画电影
2020/03/03 欧美动漫
PHP Ajax实现页面无刷新发表评论
2007/01/02 PHP
php SQL防注入代码集合
2008/04/25 PHP
js 禁用浏览器的后退功能的简单方法
2008/12/10 Javascript
jQuery 取值、赋值的基本方法整理
2014/03/31 Javascript
jquery浏览器滚动加载技术实现方案
2014/06/03 Javascript
angularjs实现与服务器交互分享
2014/06/24 Javascript
JavaScript中提前声明变量或函数例子
2014/11/12 Javascript
jQuery判断一个元素是否可见的方法
2015/06/05 Javascript
javascript HTML5 Canvas实现圆盘抽奖功能
2016/04/11 Javascript
JavaScript组合模式学习要点
2016/08/26 Javascript
vue开发心得和技巧分享
2016/10/27 Javascript
jQuery实现遮罩层登录对话框
2016/12/29 Javascript
jQuery中DOM节点的删除方法总结(超全面)
2017/01/22 Javascript
微信小程序 自定义消息提示框
2017/08/06 Javascript
[01:12:35]Spirit vs Navi Supermajor小组赛 A组败者组第一轮 BO3 第二场 6.2
2018/06/03 DOTA
[02:08]什么藏在DOTA2 TI9“小紫本”里?斧王历险记告诉你!
2019/05/17 DOTA
python中dir函数用法分析
2015/04/17 Python
Python 26进制计算实现方法
2015/05/28 Python
Python 两个列表的差集、并集和交集实现代码
2016/09/21 Python
Python 实现数据库更新脚本的生成方法
2017/07/09 Python
Python动态导入模块的方法实例分析
2018/06/28 Python
对Python 窗体(tkinter)树状数据(Treeview)详解
2018/10/11 Python
详解如何在Apache中运行Python WSGI应用
2019/01/02 Python
详解python播放音频的三种方法
2019/09/23 Python
详解HTML5 window.postMessage与跨域
2017/05/11 HTML / CSS
台湾菁英交友:结识黄金单身的台湾人
2018/01/22 全球购物
美国家居装饰网上商店:Lulu & Georgia
2019/09/14 全球购物
便利店的创业计划书
2014/01/15 职场文书
班组长竞聘书
2014/03/31 职场文书
村居抓节水倡议书
2014/05/19 职场文书
应聘护士求职信
2014/07/21 职场文书
遗失证明范文
2015/06/19 职场文书
标准发言稿结尾
2019/07/18 职场文书
如何使用Python对NetCDF数据做空间相关分析
2021/04/21 Python
仅仅使用 HTML/CSS 实现各类进度条的方式汇总
2021/11/11 HTML / CSS