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 相关文章推荐
linux系统使用python监测系统负载脚本分享
Jan 15 Python
在Python的Django框架中创建和使用模版
Jul 15 Python
Python中字符串的修改及传参详解
Nov 30 Python
Python开发的实用计算器完整实例
May 10 Python
Python+matplotlib+numpy实现在不同平面的二维条形图
Jan 02 Python
使用C++扩展Python的功能详解
Jan 12 Python
VSCode下好用的Python插件及配置
Apr 06 Python
Python通过for循环理解迭代器和生成器实例详解
Feb 16 Python
对python3.4 字符串转16进制的实例详解
Jun 12 Python
解决.ui文件生成的.py文件运行不出现界面的方法
Jun 19 Python
Python使用百度翻译开发平台实现英文翻译为中文功能示例
Aug 08 Python
如何更换python默认编辑器的背景色
Aug 10 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 简单数组排序实现代码
2009/08/05 PHP
thinkphp模板输出技巧汇总
2014/11/24 PHP
PHP PDOStatement::setFetchMode讲解
2019/02/03 PHP
jquery 常用操作整理 基础入门篇
2009/10/14 Javascript
跨浏览器通用、可重用的选项卡tab切换js代码
2011/09/20 Javascript
详解WordPress开发中get_current_screen()函数的使用
2016/01/11 Javascript
第九章之路径分页标签与徽章组件
2016/04/25 Javascript
Node.js 实现简单小说爬虫实例
2016/11/18 Javascript
js指定步长实现单方向匀速运动
2017/07/17 Javascript
JavaScript学习教程之cookie与webstorage
2019/06/23 Javascript
如何在postman测试用例中实现断言过程解析
2020/07/09 Javascript
Python多线程实例教程
2014/09/06 Python
Python常用的日期时间处理方法示例
2015/02/08 Python
Flask框架中密码的加盐哈希加密和验证功能的用法详解
2016/06/07 Python
Python基于递归和非递归算法求两个数最大公约数、最小公倍数示例
2018/05/21 Python
使用anaconda的pip安装第三方python包的操作步骤
2018/06/11 Python
python检测主机的连通性并记录到文件的实例
2018/06/21 Python
python替换字符串中的子串图文步骤
2019/06/19 Python
python实现文本进度条 程序进度条 加载进度条 单行刷新功能
2019/07/03 Python
Python Django 命名空间模式的实现
2019/08/09 Python
Python Print实现在输出中插入变量的例子
2019/12/25 Python
tensorflow 利用expand_dims和squeeze扩展和压缩tensor维度方式
2020/02/07 Python
Python中os模块功能与用法详解
2020/02/26 Python
jupyter notebook 重装教程
2020/04/16 Python
Pycharm生成可执行文件.exe的实现方法
2020/06/02 Python
英语专业学子个人的自我评价
2013/10/02 职场文书
开发房地产协议书
2014/09/14 职场文书
助学贷款贫困证明
2014/09/23 职场文书
授权收款委托书范本
2014/10/10 职场文书
公司授权委托书
2014/10/17 职场文书
干部个人考察材料
2014/12/24 职场文书
投标单位介绍信
2015/05/05 职场文书
防溺水安全教育主题班会
2015/08/12 职场文书
医院病假条怎么写
2015/08/17 职场文书
公司会议开幕词
2016/03/03 职场文书
基于Redis实现分布式锁的方法(lua脚本版)
2021/05/12 Redis