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编写简单文件夹内图片浏览工具
Aug 17 Python
python用reduce和map把字符串转为数字的方法
Dec 19 Python
python 系统调用的实例详解
Jul 11 Python
python 删除大文件中的某一行(最有效率的方法)
Aug 19 Python
Python简单实现socket信息发送与监听功能示例
Jan 03 Python
python筛选出两个文件中重复行的方法
May 31 Python
python配置grpc环境
Jan 01 Python
使用python批量化音乐文件格式转换的实例
Jan 09 Python
详解Python Matplotlib解决绘图X轴值不按数组排序问题
Aug 05 Python
python自动化测试之异常及日志操作实例分析
Nov 09 Python
快速解决pymongo操作mongodb的时区问题
Dec 05 Python
pytorch中的torch.nn.Conv2d()函数图文详解
Feb 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
第四节 构造函数和析构函数 [4]
2006/10/09 PHP
实用函数4
2007/11/08 PHP
php下几个常用的去空、分组、调试数组函数
2009/02/22 PHP
PHP使用Alexa API获取网站的Alexa排名例子
2014/06/12 PHP
两种设置php载入页面时编码的方法
2014/07/29 PHP
PHP中使用BigMap实例
2015/03/30 PHP
PHP函数import_request_variables()用法分析
2016/04/02 PHP
PHP 99乘法表的几种实现代码
2020/10/13 PHP
JavaScript 关键字屏蔽实现函数
2009/08/02 Javascript
JavaScript 存在陷阱 删除某一区域所有节点
2010/05/10 Javascript
javascript 原型继承介绍
2011/08/30 Javascript
jquery与js函数冲突的两种解决方法
2013/09/09 Javascript
javascript 通用loading动画效果实例代码
2014/01/14 Javascript
JQuery 实现在同一页面锚点链接之间的平滑滚动
2014/10/29 Javascript
JavaScript的jQuery库中function的存在和参数问题
2015/08/13 Javascript
使用微信小程序开发前端【快速入门】
2016/12/05 Javascript
JS实现搜索框文字可删除功能
2016/12/28 Javascript
Vue.js在数组中插入重复数据的实现代码
2017/11/17 Javascript
浅谈SpringMVC中post checkbox 多选框value的值(隐藏域方式)
2018/01/08 Javascript
vue src动态加载请求获取图片的方法
2018/10/17 Javascript
JSON字符串操作移除空串更改key/value的介绍
2019/01/05 Javascript
Vue列表循环从指定下标开始的多种解决方案
2020/04/08 Javascript
Python 12306抢火车票脚本
2018/02/07 Python
Python向MySQL批量插数据的实例讲解
2018/03/31 Python
python读取txt文件并取其某一列数据的示例
2019/02/19 Python
python绘制直方图和密度图的实例
2019/07/08 Python
Python爬虫谷歌Chrome F12抓包过程原理解析
2020/06/04 Python
Spartoo芬兰:欧洲最大的网上鞋店
2016/08/28 全球购物
将时尚融入珠宝:Adornmonde
2019/10/17 全球购物
物流管理专业职业生涯规划书
2014/01/06 职场文书
个人遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
甲乙双方合作协议书
2014/10/13 职场文书
2016春节放假通知范文
2015/08/18 职场文书
2016年教师师德师风心得体会
2016/01/12 职场文书
动画电影《擅长捉弄人的高木同学》6月10日上映!
2022/03/20 日漫
在SQL Server中使用 Try Catch 处理异常的示例详解
2022/07/15 SQL Server