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

本文实例讲述了Python数据结构与算法" title="数据结构与算法">数据结构与算法之使用队列解决小猫钓鱼问题。分享给大家供大家参考,具体如下:

按照《啊哈》里的思路实现这道题目,但是和结果不一样,我自己用一幅牌试了一下,发现是我的结果像一点,可能我理解的有偏差。

# 小猫钓鱼

# 计算桌上每种牌的数量

# 使用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程序设计有所帮助。

以上是 Python数据结构与算法之使用队列解决小猫钓鱼问题 的全部内容, 来源链接: utcz.com/z/339899.html

回到顶部