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基于pygame实现图片代替鼠标移动效果
Nov 11 Python
浅析Python中yield关键词的作用与用法
Nov 29 Python
Python交互环境下实现输入代码
Jun 22 Python
python3.6利用pyinstall打包py为exe的操作实例
Oct 31 Python
在mac下查找python包存放路径site-packages的实现方法
Nov 06 Python
python使用matplotlib绘制热图
Nov 07 Python
Python函数中不定长参数的写法
Feb 13 Python
更新修改后的Python模块方法
Mar 03 Python
python3通过qq邮箱发送邮件以及附件
May 20 Python
Spy++的使用方法及下载教程
Jan 29 Python
如何使用PyCharm及常用配置详解
Jun 03 Python
Python合并pdf文件的工具
Jul 01 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中使用Oracle数据库(3)
2006/10/09 PHP
Zend Framework自定义Helper类相关注意事项总结
2016/03/14 PHP
php魔法函数与魔法常量使用介绍
2017/07/23 PHP
PHP命名空间用法实例分析
2019/09/04 PHP
php 使用ActiveMQ发送消息,与处理消息操作示例
2020/02/23 PHP
JScript分割字符串示例代码
2013/09/04 Javascript
js计算文本框输入的字符数
2015/10/23 Javascript
javascript图片延迟加载实现方法及思路
2015/12/31 Javascript
Jquery zTree 树控件异步加载操作
2016/02/25 Javascript
利用jQuery实现打字机字幕效果实例代码
2016/09/02 Javascript
js捕捉键盘事件和按键键值的方法
2016/10/10 Javascript
javascript 正则表达式去空行方法
2017/01/24 Javascript
js实现悬浮窗效果(支持拖动)
2017/03/09 Javascript
VueJS事件处理器v-on的使用方法
2017/09/27 Javascript
VeeValidate 的使用场景以及配置详解
2019/01/11 Javascript
ajax跨域访问遇到的问题及解决方案
2019/05/23 Javascript
vue跳转方式(打开新页面)及传参操作示例
2020/01/26 Javascript
vue实现tab栏点击高亮效果
2020/08/19 Javascript
[36:52]DOTA2真视界:基辅特锦赛总决赛
2017/05/21 DOTA
Python实现自动登录百度空间的方法
2017/06/10 Python
python 求1-100之间的奇数或者偶数之和的实例
2019/06/11 Python
对python3.4 字符串转16进制的实例详解
2019/06/12 Python
win10下python2和python3共存问题解决方法
2019/12/23 Python
python UIAutomator2使用超详细教程
2021/02/19 Python
HTML5移动端开发中的Viewport标签及相关CSS用法解析
2016/04/15 HTML / CSS
有关HTML5中背景音乐的自动播放功能
2017/10/16 HTML / CSS
欧洲最大的预定车位市场:JustPark
2020/01/06 全球购物
主键(Primary Key)约束和唯一性(UNIQUE)约束的区别
2013/05/29 面试题
护理工作感言
2014/01/16 职场文书
三分钟英语演讲稿
2014/04/24 职场文书
高一学年自我鉴定范文(3篇)
2014/09/26 职场文书
售后前台接待岗位职责
2015/04/03 职场文书
初中家长意见
2015/06/03 职场文书
公司晚宴祝酒词
2015/08/11 职场文书
MySQL学习必备条件查询数据
2022/03/25 MySQL
Windows7下FTP搭建图文教程
2022/08/05 Servers