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 相关文章推荐
合并Excel工作薄中成绩表的VBA代码,非常适合教育一线的朋友
Apr 09 Python
python实现定时同步本机与北京时间的方法
Mar 24 Python
Django中URL视图函数的一些高级概念介绍
Jul 20 Python
使用Python判断质数(素数)的简单方法讲解
May 05 Python
python批量实现Word文件转换为PDF文件
Mar 15 Python
实例讲解Python爬取网页数据
Jul 08 Python
Python常见内置高效率函数用法示例
Jul 31 Python
python随机在一张图像上截取任意大小图片的方法
Jan 24 Python
详解python:time模块用法
Mar 25 Python
python使用 cx_Oracle 模块进行查询操作示例
Nov 28 Python
深入浅析python的第三方库pandas
Feb 13 Python
教你如何使用Python开发一个钉钉群应答机器人
Jun 21 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学习教程之第1天
2008/06/15 PHP
php图片处理:加水印、缩略图的实现(自定义函数:watermark、thumbnail)
2010/12/02 PHP
PHP检查URL包含特定字符串实例方法
2019/02/11 PHP
node+express+jade制作简单网站指南
2014/11/26 Javascript
js实现防止被iframe的方法
2015/07/03 Javascript
JavaScript包装对象使用详解
2015/07/09 Javascript
JavaScript转换与解析JSON方法实例详解
2015/11/24 Javascript
BootStrap学习笔记之nav导航栏和面包屑导航
2017/01/03 Javascript
js事件冒泡与事件捕获详解
2017/02/20 Javascript
Puppeteer环境搭建的详细步骤
2018/09/21 Javascript
Node.js 深度调试方法解析
2020/07/28 Javascript
[45:32]Liquid vs LGD 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
Python的Bottle框架的一些使用技巧介绍
2015/04/08 Python
Python命令启动Web服务器实例详解
2017/02/23 Python
python3 读写文件换行符的方法
2018/04/09 Python
python实现飞机大战微信小游戏
2020/03/21 Python
10 分钟快速入门 Python3的教程
2019/01/29 Python
Python面向对象程序设计多继承和多态用法示例
2019/04/08 Python
python3.7将代码打包成exe程序并添加图标的方法
2019/10/11 Python
Python+PyQt5+MySQL实现天气管理系统
2020/06/16 Python
scrapy实践之翻页爬取的实现
2021/01/05 Python
为什么会有内存对齐
2016/10/10 面试题
党的群众路线教育实践活动个人承诺书
2014/05/22 职场文书
省级优秀毕业生主要事迹
2014/05/29 职场文书
2014大学生中国梦主题教育学习思想汇报
2014/09/10 职场文书
习近平在党的群众路线教育实践活动总结大会上的讲话
2014/10/21 职场文书
2014年财政工作总结
2014/12/10 职场文书
2016春节慰问信范文
2015/03/25 职场文书
2015年三年级班主任工作总结
2015/05/21 职场文书
2015年安全生产管理工作总结
2015/05/25 职场文书
采购部2015年度工作总结
2015/07/24 职场文书
2015年幼儿教育工作总结
2015/07/24 职场文书
离职告别感言
2015/08/04 职场文书
导游词之天津古文化街
2019/11/09 职场文书
mysql中varchar类型的日期进行比较、排序等操作的实现
2021/11/17 MySQL
Python作用域和名称空间的详细介绍
2022/04/13 Python