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导出Excel图表以及导出为图片的方法
Nov 07 Python
python中的错误处理
Apr 10 Python
Python 实现链表实例代码
Apr 07 Python
Python编程产生非均匀随机数的几种方法代码分享
Dec 13 Python
使用python写的opencv实时监测和解析二维码和条形码
Aug 14 Python
django 快速启动数据库客户端程序的方法示例
Aug 16 Python
pytorch多进程加速及代码优化方法
Aug 19 Python
python中Lambda表达式详解
Nov 20 Python
python科学计算之narray对象用法
Nov 25 Python
new_zeros() pytorch版本的转换方式
Feb 18 Python
Python新手学习raise用法
Jun 03 Python
Pycharm2020.1安装无法启动问题即设置中文插件的方法
Aug 07 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的ob_start();控制您的浏览器cache!
2007/02/14 PHP
php中使用exec,system等函数调用系统命令的方法(不建议使用,可导致安全问题)
2012/09/07 PHP
php中substr()函数参数说明及用法实例
2014/11/15 PHP
php简单操作mysql数据库的类
2015/04/16 PHP
Yii2框架可逆加密简单实现方法
2017/08/25 PHP
node.js中的Socket.IO使用实例
2014/11/04 Javascript
node.js中的fs.openSync方法使用说明
2014/12/17 Javascript
举例讲解JavaScript中关于对象操作的相关知识
2015/11/16 Javascript
Bootstrap学习笔记之css样式设计(2)
2016/06/07 Javascript
jQuery实现查找链接文字替换属性的方法
2016/06/27 Javascript
微信js-sdk分享功能接口常用逻辑封装示例
2016/10/13 Javascript
使用Angular.js实现简单的购物车功能
2016/11/21 Javascript
基于vue的下拉刷新指令和滚动刷新指令
2016/12/23 Javascript
JSON键值对序列化和反序列化解析
2017/01/24 Javascript
js实现上下左右弹框划出效果
2017/03/08 Javascript
Vue.set()实现数据动态响应的方法
2018/02/07 Javascript
setTimeout时间设置为0详细解析
2018/03/13 Javascript
微信小程序 腾讯地图显示偏差问题解决
2019/07/27 Javascript
Django实战之用户认证(用户登录与注销)
2018/07/16 Python
使用tensorflow实现线性svm
2018/09/07 Python
python中for循环输出列表索引与对应的值方法
2018/11/07 Python
浅谈python下含中文字符串正则表达式的编码问题
2018/12/07 Python
详解Python3中ceil()函数用法
2019/02/19 Python
Python程序包的构建和发布过程示例详解
2019/06/09 Python
在pytorch中对非叶节点的变量计算梯度实例
2020/01/10 Python
基于Tensorflow读取MNIST数据集时网络超时的解决方式
2020/06/22 Python
Django Session和Cookie分别实现记住用户登录状态操作
2020/07/02 Python
如何用Python 实现全连接神经网络(Multi-layer Perceptron)
2020/10/15 Python
Senreve官网:美国旧金山的奢侈手袋品牌
2019/03/21 全球购物
澳大利亚游乐场设备品牌:Lifespan Kids
2019/05/24 全球购物
Jack Rogers官网:美国经典的女性鞋靴品牌
2019/09/04 全球购物
饲料采购员岗位职责
2013/12/19 职场文书
教师队伍管理制度
2014/01/14 职场文书
2015年前台个人工作总结
2015/04/03 职场文书
旅行社计调工作总结
2015/08/12 职场文书
《我是什么》教学反思
2016/02/16 职场文书