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实现封装得到virustotal扫描结果
Oct 05 Python
使用Python脚本将文字转换为图片的实例分享
Aug 29 Python
Python基础练习之用户登录实现代码分享
Nov 08 Python
详解python中sort排序使用
Mar 23 Python
Python Flask框架模板操作实例分析
May 03 Python
简单了解python高阶函数map/reduce
Jun 28 Python
django删除表重建的实现方法
Aug 28 Python
Python: 传递列表副本方式
Dec 19 Python
Django高并发负载均衡实现原理详解
Apr 04 Python
Python如何读取、写入CSV数据
Jul 28 Python
如何在pycharm中安装第三方包
Oct 27 Python
自己搭建resnet18网络并加载torchvision自带权重的操作
May 13 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定义一个数组最简单的方法
2019/10/04 PHP
用JQuery 实现的自定义对话框
2007/03/24 Javascript
IE8 原生JSON支持
2009/04/13 Javascript
myFocus slide3D v1.1.0 使用方法与下载
2011/01/12 Javascript
HTML中的setCapture和releaseCapture使用介绍
2012/03/21 Javascript
Javascript变量作用域详解
2013/12/06 Javascript
node.js适合游戏后台开发吗?
2014/09/03 Javascript
javascript刷新父页面的各种方法汇总
2014/09/03 Javascript
angular.element方法汇总
2015/01/07 Javascript
Jquery树插件zTree实现菜单树
2017/01/24 Javascript
JS对象深度克隆实例分析
2017/03/16 Javascript
nodejs基于express实现文件上传的方法
2018/03/19 NodeJs
layui实现文件或图片上传记录
2018/08/28 Javascript
angularJs中orderBy筛选以及filter过滤数据的方法
2018/09/30 Javascript
JS实现随机生成10个手机号的方法示例
2018/12/07 Javascript
微信小程序实现拍照画布指定区域生成图片
2019/07/18 Javascript
vue实现axios图片上传功能
2019/08/20 Javascript
微信小程序获取位置展示地图并标注信息的实例代码
2019/09/01 Javascript
Javascript 类型转换、封闭函数及常见内置对象操作示例
2019/11/15 Javascript
用Python下载一个网页保存为本地的HTML文件实例
2018/05/21 Python
python抖音表白程序源代码
2019/04/07 Python
使用PYTHON解析Wireshark的PCAP文件方法
2019/07/23 Python
wxPython多个窗口的基本结构
2019/11/19 Python
python爬虫把url链接编码成gbk2312格式过程解析
2020/06/08 Python
Python 多进程、多线程效率对比
2020/11/19 Python
html5 兼容IE6结构的实现代码
2012/05/14 HTML / CSS
什么是ARP(Address Resolution Protocol)地址解析协议
2013/10/31 面试题
最新大学生自我评价
2013/09/24 职场文书
大学在校生求职信范文
2013/11/21 职场文书
建筑设计学生的自我评价
2014/01/16 职场文书
《小小竹排画中游》教学反思
2014/02/26 职场文书
环保志愿者活动方案
2014/08/14 职场文书
反对形式主义、官僚主义、享乐主义和奢靡之风整改措施
2014/09/17 职场文书
英语辞职信怎么写
2015/02/28 职场文书
CSS巧用渐变实现高级感背景光动画
2021/12/06 HTML / CSS
「租借女友」第2季樱泽墨角色PV&新视觉图公开
2022/03/21 日漫