用Python复习离散数学(二)
这次复习的是计数问题,立刻走起吧!
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复习离散数学(二)的更多相关文章
- 用Python复习离散数学(一)
		
最近要复习离散数学,不想挂啊,但是又想编程,大家知道啦,程序员离不开代码啊,所用想边复习边写代码,所以就自己用代码去实现一下离散的知识点,当做复习,自知自己的Python很渣,也想借此巩固一下基础,哈 ...
 - 编程语言与Python学习(二)
		
1.1 流程控制之for循环 1 迭代式循环:for,语法如下 for i in range(10): 缩进的代码块 2 break与continue(同上) 3 循环嵌套 for i in rang ...
 - python排序之二冒泡排序法
		
python排序之二冒泡排序法 如果你理解之前的插入排序法那冒泡排序法就很容易理解,冒泡排序是两个两个以向后位移的方式比较大小在互换的过程好了不多了先上代码吧如下: 首先还是一个无序列表lis,老规矩 ...
 - Python 基础语法(二)
		
Python 基础语法(二) --------------------------------------------接 Python 基础语法(一) ------------------------ ...
 - Python 数据分析(二  本实验将学习利用 Python 数据聚合与分组运算,时间序列,金融与经济数据应用等相关知识
		
Python 数据分析(二) 本实验将学习利用 Python 数据聚合与分组运算,时间序列,金融与经济数据应用等相关知识 第1节 groupby 技术 第2节 数据聚合 第3节 分组级运算和转换 第4 ...
 - 初学 Python(十二)——高阶函数
		
初学 Python(十二)--高阶函数 初学 Python,主要整理一些学习到的知识点,这次是高阶函数. #-*- coding:utf-8 -*- ''''' 话说高阶函数: 能用函数作为参数的函数 ...
 - python/MySQL练习题(二)
		
python/MySQL练习题(二) 查询各科成绩前三名的记录:(不考虑成绩并列情况) select score.sid,score.course_id,score.num,T.first_num,T ...
 - Python/MySQL(二、表操作以及连接)
		
Python/MySQL(二.表操作以及连接) mysql表操作: 主键:一个表只能有一个主键.主键可以由多列组成. 外键 :可以进行联合外键,操作. mysql> create table y ...
 - python下实现二叉堆以及堆排序
		
python下实现二叉堆以及堆排序 堆是一种特殊的树形结构, 堆中的数据存储满足一定的堆序.堆排序是一种选择排序, 其算法复杂度, 时间复杂度相对于其他的排序算法都有很大的优势. 堆分为大头堆和小头堆 ...
 
随机推荐
- React实践(一)
			
该实践取自官方教程:https://github.com/reactjs/react-tutorial 主要是自实现的过程以及一些心得体会 该实践是实现一个评论框. 一个展示所有评论的视图 一个提交评 ...
 - 至linuxNIC添加多个IP
			
由于工作的需要,只是有一个2以太网端口server构造3个月IP.制linux. 整理如以下的现在的过程,有离开后,,学生们也将不能够引用. IP1:10.110.97.68 IP2:10.115.2 ...
 - strip 使用命令
			
使用 通过消除使用调试器的粘合剂和符号信息,减少扩展公共对象文件格式(XCOFF)对象文件大小. 语法 strip [ -V ] [ -r [ -l ] | -x [ -l ] | -t | -H | ...
 - java OutOfMorryError (replaceAll)
			
最近在使用string类中的replaceAll函数时碰到这个错误,由于string长度比较长,文本文档9M多,可以增加jvm的内存大小解决. 下面是一篇对OutOfMorryError错误的一些处理 ...
 - 使用Json让Java和C#沟通的方法
			
原文:使用Json让Java和C#沟通的方法 最近很忙啊,新项目下来了,都没时间写博客了.频率降低点,但不能不总结跟大家分享啊. 我们在项目里经常要涉及到各模块间的通信,这其中又不可避免要碰到各类语言 ...
 - STL该反应堆运行
			
首先来看全然二叉树的定义: 若设二叉树的深度为h,除第 h 层外,其他各层 (1-h-1) 的结点数都达到最大个数,第 h 层全部的结点都连续集中在最左边,这就是全然二叉树.而将一维数组视为全然二叉树 ...
 - DevExpress的Web控件汉化方法
			
原文:DevExpress的Web控件汉化方法 项目中用到devexpress的web控件,机器没有安装devexpress控件,直接在项目中引用的dev的dll,项目运行时发现都是英文界面,所以解决 ...
 - 动态类(Dynamic)应用
			
动态类(Dynamic)应用 背景: 在Coding中有时候会遇到一些需要解析的数据,可是数据的字段数量和名称未统一,我们没法定义实体类来对应.那么我们就会想到通过C#的dynamic动态类来实现,如 ...
 - API帮助页面
			
ASP.NET Web API 2:创建API帮助页面 当你新建了一个web API服务之后,再建一个API帮助页面是很有好处的,这样其他开发人员就会很清楚地知道如何调用你的API接口. ...
 - 分享一个SQLSERVER脚本
			
原文:分享一个SQLSERVER脚本 分享一个SQLSERVER脚本 很多时候我们都需要计算数据库中各个表的数据量很每行记录所占用空间 这里共享一个脚本 CREATE TABLE #tablespac ...