这次复习的是计数问题,立刻走起吧!

  1.乘法原理

    如果一项工作需要t步完成的,第一步有n1种不同的选择,第二步有n2种不同的选择,……,第t步有nt中不同的选择,那么完成这项工作所有可能的选择种数为:

      n1 x n2 x …… x nt

def multiply(*args):
count = 0
for x in args:
count *= x
print "the all possible choices is %d" % count

  2.加法原理

    假定X1,X2,……,Xt均为集合,第i个集合Xi有ni个元素,则可以从X1,X2,……,Xt中选出的元素总数为:

      n1 + n2 + …… + nt

def add(*args):
count = 0
for x in args:
count += x
print "the total number is %d" % count

  3.排列问题

    从含n个不同元素的集合S总有序选取的r个元素叫做S的一个r排列,不同的排列总数记为P(n, r),如果r = n,则称这个排列为S的一个全排列,简称为S的排列。

下面是在对集合中进行排列,添加了几个方法:

    def remove(self, element):
self.s.remove(element)
self.__num -= 1 def copy(self):
setTemp = MySet()
for x in self.s:
setTemp.add(x)
return setTemp def rank(self, n):
if n <= self.__num and n > 0:
setTemp = MySet()
self.rankHelp(setTemp, n, '', self)
return setTemp
else:
print 'Error in parameter' def rankHelp(self, setTemp, n, element, s1):
if n == 1:
for x in s1.s:
e = element
e += x
setTemp.add(e)
else:
for x in s1.s:
temp = s1.copy()
e = element
e += x
temp.remove(x)
self.rankHelp(setTemp, n-1, e, temp)

  4.组合问题

    从含有n个不同元素的集合S中无序选取的r个元素叫做S的一个r组合,不同的组合数记为C(n, r)。

    def build(self, temp):
setTemp = MySet()
for x in temp:
setTemp.add(x)
return setTemp def group(self, n):
if n <= self.__num and n > 0:
setTemp = MySet()
self.groupHelp(setTemp, n, '', self)
return setTemp
else:
print 'Error in parameter' def groupHelp(self, setTemp, n, element, s1):
if n == 1:
for x in s1.s:
e = element
e += x
setTemp.add(e)
elif n == s1.__num:
for x in s1.s:
element += x
setTemp.add(element)
else:
for x in range(s1.length()-n+1):
e = element
e += s1.get(x)
temp = self.build(s1.s[x+1:])
self.groupHelp(setTemp, n-1, e, temp)

  5.容斥原理

    所谓的容斥,是指我们计算某类物体的数目的时候,要排斥那些不应包含在这个计数中的数目,但同时要包容那些被错误地排斥了的数目,以此补偿,这个原理称为容斥原理。

  6.鸽笼原理

    若有n+1只鸽子住进n个鸽笼,则有一个鸽笼至少住进2只鸽子。

用Python复习离散数学(二)的更多相关文章

  1. 用Python复习离散数学(一)

    最近要复习离散数学,不想挂啊,但是又想编程,大家知道啦,程序员离不开代码啊,所用想边复习边写代码,所以就自己用代码去实现一下离散的知识点,当做复习,自知自己的Python很渣,也想借此巩固一下基础,哈 ...

  2. 编程语言与Python学习(二)

    1.1 流程控制之for循环 1 迭代式循环:for,语法如下 for i in range(10): 缩进的代码块 2 break与continue(同上) 3 循环嵌套 for i in rang ...

  3. python排序之二冒泡排序法

    python排序之二冒泡排序法 如果你理解之前的插入排序法那冒泡排序法就很容易理解,冒泡排序是两个两个以向后位移的方式比较大小在互换的过程好了不多了先上代码吧如下: 首先还是一个无序列表lis,老规矩 ...

  4. Python 基础语法(二)

    Python 基础语法(二) --------------------------------------------接 Python 基础语法(一) ------------------------ ...

  5. Python 数据分析(二 本实验将学习利用 Python 数据聚合与分组运算,时间序列,金融与经济数据应用等相关知识

    Python 数据分析(二) 本实验将学习利用 Python 数据聚合与分组运算,时间序列,金融与经济数据应用等相关知识 第1节 groupby 技术 第2节 数据聚合 第3节 分组级运算和转换 第4 ...

  6. 初学 Python(十二)——高阶函数

    初学 Python(十二)--高阶函数 初学 Python,主要整理一些学习到的知识点,这次是高阶函数. #-*- coding:utf-8 -*- ''''' 话说高阶函数: 能用函数作为参数的函数 ...

  7. python/MySQL练习题(二)

    python/MySQL练习题(二) 查询各科成绩前三名的记录:(不考虑成绩并列情况) select score.sid,score.course_id,score.num,T.first_num,T ...

  8. Python/MySQL(二、表操作以及连接)

    Python/MySQL(二.表操作以及连接) mysql表操作: 主键:一个表只能有一个主键.主键可以由多列组成. 外键 :可以进行联合外键,操作. mysql> create table y ...

  9. python下实现二叉堆以及堆排序

    python下实现二叉堆以及堆排序 堆是一种特殊的树形结构, 堆中的数据存储满足一定的堆序.堆排序是一种选择排序, 其算法复杂度, 时间复杂度相对于其他的排序算法都有很大的优势. 堆分为大头堆和小头堆 ...

随机推荐

  1. HTTPS背后的加密算法(转)

    当你在浏览器的地址栏上输入https开头的网址后,浏览器和服务器之间会在接下来的几百毫秒内进行大量的通信.InfoQ的这篇文章对此有非常详细的描述.这些复杂的步骤的第一步,就是浏览器与服务器之间协商一 ...

  2. linux_UBUNTU 12.04 上使用 SQUID 架设HTTP正向代理服务器

    配置普通HTTP正向代理 安装   1 sudo apt-get install squid squid-common 配置 squid3   1 sudo vim /etc/squid3/squid ...

  3. 基于Jquery的多彩二维码的生成

    Demo效果图: 源代码: @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name=&quo ...

  4. [ Swift框架 ] # SwiftyJSON

    Swift写的关于转化JSON数据 https://github.com/SwiftyJSON/SwiftyJSON

  5. Tomcat剖析(五):Tomcat 容器

    Tomcat剖析(五):Tomcat 容器 1. Tomcat剖析(一):一个简单的Web服务器 2. Tomcat剖析(二):一个简单的Servlet服务器 3. Tomcat剖析(三):连接器(1 ...

  6. CSS3+HTML5特效4 - 横向无缝滚动

    先看例子 This is a test 1. This is a test 2. This is a test 3. This is a test 4. This is a test 5. This ...

  7. 项目管理实践 -- 健身小管家(Fitness housekeeper)的管理(4)

    提前几天把检查更新的功能完成了.

  8. POJ 2114 Boatherds 划分树

    标题效果:鉴于一棵树,问有两点之间没有距离是k的. 数据的多组 思维:和IOI2011的Race喜欢.不是这么简单.阅读恶心,我是在主要功能的别人的在线副本. CODE: #include <c ...

  9. sql性能

    ---正在运行的 select a.username, a.sid,b.SQL_TEXT, b.SQL_FULLTEXT   from v$session a, v$sqlarea b where a ...

  10. javascript4

    javascript使用Unicode字符集编写的.javaScript是区分大小写的语言. 标示符就是一个名字.在javascript中用标示符来对变量和函数进行命名或者用做javascript代码 ...