Python数据结构与算法之使用队列解决小猫钓鱼问题

yipeiwu_com7年前Python基础

本文实例讲述了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 "【听图阁-专注于Python设计】测试结果:"
  henhenhaahaa()
  # 我自己手动用牌模拟的结果根本就和书上不一样
  # 我觉得我自己的答案没啥问题
  # 单步模拟的结果也是一样的

运行结果:

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python数据结构与算法教程》、《Python加密解密算法与技巧总结》、《Python编码操作技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程

希望本文所述对大家Python程序设计有所帮助。

相关文章

python使用cookie库操保存cookie详解

Cookie用于服务器实现会话,用户登录及相关功能时进行状态管理。要在用户浏览器上安装cookie,HTTP服务器向HTTP响应添加类似以下内容的HTTP报头: 复制代码 代码如下:Se...

Python实现动态图解析、合成与倒放

Python实现动态图解析、合成与倒放

动态图现在已经融入了我们的日常网络生活,大大丰富了我们的表达方式和交流趣味性。常常是一言不合就扔动图,我这里就不举例子了,例子太多,平时大家也都接触过。咱们直接开始本文的内容。 用到的...

Python的Django REST框架中的序列化及请求和返回

序列化Serialization 1. 设置一个新的环境 在我们开始之前, 我们首先使用virtualenv要创建一个新的虚拟环境,以使我们的配置和我们的其他项目配置彻底分开。 $m...

python实现动态创建类的方法分析

本文实例讲述了python实现动态创建类的方法。分享给大家供大家参考,具体如下: python作为动态语言,如何在运行时动态创建类呢(python Creating classes dy...

python处理PHP数组文本文件实例

需求: 对一个配置文件进行处理,拿出可用的字符来拼接,下面是原始文本,我们要得到这样的结果, 复制代码 代码如下: redis -h 127.0.0.1 -p 6379 | select...