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中函数的参数传递与可变长参数介绍
Jun 30 Python
python实现图像识别功能
Jan 29 Python
Python字典的核心底层原理讲解
Jan 24 Python
pytorch多进程加速及代码优化方法
Aug 19 Python
python ImageDraw类实现几何图形的绘制与文字的绘制
Feb 26 Python
Python Selenium自动化获取页面信息的方法
Aug 31 Python
10款最佳Python开发工具推荐,每一款都是神器
Oct 15 Python
python热力图实现简单方法
Jan 29 Python
Python抖音快手代码舞(字符舞)的实现方法
Feb 07 Python
Python基础知识之变量的详解
Apr 14 Python
基于Python实现的购物商城管理系统
Apr 27 Python
Python中super().__init__()测试以及理解
Dec 06 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
eWebEditor v3.8 商业完整版 (PHP)
2006/12/06 PHP
使用Smarty 获取当前日期时间和格式化日期时间的方法详解
2013/06/18 PHP
PHP生成sitemap.xml地图函数
2013/11/13 PHP
php生成圆角图片的方法
2015/04/07 PHP
ThinkPHP路由详解
2015/07/27 PHP
JSON用法之将PHP数组转JS数组,JS如何接收PHP数组
2015/10/08 PHP
基于PHP给大家讲解防刷票的一些技巧
2015/11/18 PHP
yii2实现根据时间搜索的方法
2016/05/25 PHP
jQuery 回车事件enter使用示例
2014/02/18 Javascript
AngularJS中如何使用$http对MongoLab数据表进行增删改查
2016/01/23 Javascript
JS检测移动端横竖屏的代码
2016/05/30 Javascript
indexedDB bootstrap angularjs之 MVC DOMO (应用示例)
2016/06/20 Javascript
JS逻辑运算符短路操作实例分析
2018/07/09 Javascript
开发用到的js封装方法(20种)
2018/10/12 Javascript
VUE2.0+ElementUI2.0表格el-table实现表头扩展el-tooltip
2018/11/30 Javascript
vue中英文切换实例代码
2020/01/21 Javascript
js实现踩五彩块游戏
2020/02/08 Javascript
Vue 封装防刷新考试倒计时组件的实现
2020/06/05 Javascript
jdk1.8+vue elementui实现多级菜单功能
2020/09/24 Javascript
如何将Node.js中的回调转换为Promise
2020/11/10 Javascript
python实现决策树C4.5算法详解(在ID3基础上改进)
2017/05/31 Python
Python中的pygal安装和绘制直方图代码分享
2017/12/08 Python
基于数据归一化以及Python实现方式
2018/07/11 Python
Python对CSV、Excel、txt、dat文件的处理
2018/09/18 Python
使用 Python 合并多个格式一致的 Excel 文件(推荐)
2019/12/09 Python
python模拟点击网页按钮实现方法
2020/02/25 Python
Python3自定义http/https请求拦截mitmproxy脚本实例
2020/05/11 Python
canvas学习笔记之2d画布基础的实现
2019/02/21 HTML / CSS
阿提哈德航空官方网站:Etihad Airways
2017/01/06 全球购物
欧洲最大的美妆零售网站:Feelunique
2017/01/14 全球购物
荷兰鞋子在线:Nelson Schoenen
2017/12/25 全球购物
Banana Republic英国官网:香蕉共和国,GAP集团旗下偏贵族风
2018/04/24 全球购物
个人租房协议书范本
2014/09/30 职场文书
同学会邀请函模板
2015/01/30 职场文书
开会迟到检讨书范文
2015/05/06 职场文书
反邪教学习心得体会
2016/01/15 职场文书