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

# 小猫钓鱼
# 计算桌上每种牌的数量
# 使用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()
# 我自己手动用牌模拟的结果根本就和书上不一样
# 我觉得我自己的答案没啥问题
# 单步模拟的结果也是一样的

python数据结构与算法——小猫钓鱼(使用队列)的更多相关文章

  1. python数据结构与算法

    最近忙着准备各种笔试的东西,主要看什么数据结构啊,算法啦,balahbalah啊,以前一直就没看过这些,就挑了本简单的<啊哈算法>入门,不过里面的数据结构和算法都是用C语言写的,而自己对p ...

  2. Python数据结构与算法之图的广度优先与深度优先搜索算法示例

    本文实例讲述了Python数据结构与算法之图的广度优先与深度优先搜索算法.分享给大家供大家参考,具体如下: 根据维基百科的伪代码实现: 广度优先BFS: 使用队列,集合 标记初始结点已被发现,放入队列 ...

  3. Python数据结构与算法--List和Dictionaries

    Lists 当实现 list 的数据结构的时候Python 的设计者有很多的选择. 每一个选择都有可能影响着 list 操作执行的快慢. 当然他们也试图优化一些不常见的操作. 但是当权衡的时候,它们还 ...

  4. Python数据结构与算法--算法分析

    在计算机科学中,算法分析(Analysis of algorithm)是分析执行一个给定算法需要消耗的计算资源数量(例如计算时间,存储器使用等)的过程.算法的效率或复杂度在理论上表示为一个函数.其定义 ...

  5. 数据结构与算法Java描述 队列

    package com.cjm.queue; /** * 数据结构与算法Java实现 队列 * * @author 小明 * */ public class Myqueue { private Nod ...

  6. Python数据结构与算法之图的最短路径(Dijkstra算法)完整实例

    本文实例讲述了Python数据结构与算法之图的最短路径(Dijkstra算法).分享给大家供大家参考,具体如下: # coding:utf-8 # Dijkstra算法--通过边实现松弛 # 指定一个 ...

  7. 『Python CoolBook:heapq』数据结构和算法_heapq堆队列算法&容器排序

    一.heapq堆队列算法模块 本模块实现了堆队列算法,也叫作优先级队列算法.堆队列是一棵二叉树,并且拥有这样特点,它的父节点的值小于等于任何它的子节点的值. 本模块实际上实现了一系列操作容器的方法,使 ...

  8. Python数据结构与算法设计总结篇

    1.Python数据结构篇 数据结构篇主要是阅读[Problem Solving with Python]( http://interactivepython.org/courselib/static ...

  9. Python 数据结构和算法

    阅读目录 什么是算法 算法效率衡量 算法分析 常见时间复杂度 Python内置类型性能分析 数据结构 顺序表 链表 栈 队列 双端队列 排序与搜索 冒泡排序 选择排序 插入排序 希尔排序 快速排序 归 ...

随机推荐

  1. webApi跨域

    <system.webServer> <httpProtocol> <customHeaders> <add name="Access-Contro ...

  2. bzoj 2324: [ZJOI2011]营救皮卡丘

    #include<cstdio> #include<iostream> #include<cstring> #include<cmath> #inclu ...

  3. hdu 4610 Cards

    http://acm.hdu.edu.cn/showproblem.php?pid=4610 先求出每个数的得分情况,分数和得分状态,(1<<4)种状态 按分数从大到小排序 然后每种状态取 ...

  4. 二模 (3) day1

    第一题: 题目描述: 一个数列定义如下:f(1) = 1,f(2) = 1,f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7.给定 A,B 和 n 的值,要求计算 ...

  5. WCF中常见的几种Host,承载WCF服务的方法

    1:写在前面 我们都知道WCF在运行的时候必须自己提供宿主来承载服务.WCF 本身没有附带宿主,而是提供了一个 ServiceHost 的类,该类允许您在自己的应用程序中host WCF 服务.然后调 ...

  6. ASP.Net Chart Control -----Bar and Column Charts

    StackedBar  StackedColumn StackedArea <asp:CHART id="Chart1" runat="server" H ...

  7. checkbox的全选、反选、删除(MainActivity)

    package com.example.ay; import java.util.ArrayList;import java.util.List; import com.example.adapter ...

  8. 在shell脚本中进行条件控制以及使用循环

    转载请标明:http://www.cnblogs.com/winifred-tang94/ if条件语句语法: if [ 条件表达式 ] then 代码 else 代码 fi 注意:在上面的if条件语 ...

  9. spring六种种依赖注入方式

    平常的java开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理,spring提出了依赖注入的思想,即依赖类不由程 ...

  10. linux上安装apache

    1 安装aprtar -zxvf apr-1.4.2.tar.gz cd apr-1.4.2.tar.gz ./configure  --prefix=/usr/local/aprmake  & ...