首页 > 编程 > Python > 正文

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

2019-11-25 15:32:42
字体:
来源:转载
供稿:网友

本文实例讲述了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编码操作技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表