zoukankan      html  css  js  c++  java
  • 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__":
        henhenhaahaa()
        # 我自己手动用牌模拟的结果根本就和书上不一样
        # 我觉得我自己的答案没啥问题
        # 单步模拟的结果也是一样的
  • 相关阅读:
    【MVC 4】7.SportsSore:完成购物车
    【MVC 4】6.SportsSore:导航
    【MVC 4】5.SportsSore —— 一个真实的应用程序
    【网络文摘】面试感悟:3年工作经验程序员应有的技能
    【网络文摘】一个大神程序员的使命感究竟应该是什么
    join的简单总结
    模块化(1):基本思路
    Android 9.0新特性
    DataBinding初认识
    Android 7.0 新特性
  • 原文地址:https://www.cnblogs.com/hanahimi/p/4692537.html
Copyright © 2011-2022 走看看