用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下实现二叉堆以及堆排序 堆是一种特殊的树形结构, 堆中的数据存储满足一定的堆序.堆排序是一种选择排序, 其算法复杂度, 时间复杂度相对于其他的排序算法都有很大的优势. 堆分为大头堆和小头堆 ...
随机推荐
- Android第一次打开应用程序,实现向导界面
转载请注明出处,谢谢http://blog.csdn.net/harryweasley/article/details/42079167 先说下思路:1.利用Preference存储数据,来记录是否是 ...
- HDU 2841 Visible Trees(数论)
标题效果:给你个m*n方格,广场格从(1,1)开始. 在树中的每个点,然后让你(0,0)点往下看,问:你能看到几棵树. 解题思路:假设你的视线被后面的树和挡住的话以后在这条线上的树你是都看不见的啊.挡 ...
- StyleCop中有一些官方自己写好的检测规则下面就是英文的解释
在StyleCop中有一些官方自己写好的检测规则下面就是英文的解释 文档规则 1.SA1600:ElementsMustBeDocumented元素必须添加注释 2.SA1601: PartialEl ...
- Tomcat剖析(四):Tomcat默认连接器(1)
Tomcat剖析(四):Tomcat默认连接器(1) 1. Tomcat剖析(一):一个简单的Web服务器 2. Tomcat剖析(二):一个简单的Servlet服务器 3. Tomcat剖析(三): ...
- 【百度地图API】如何判断点击的是地图还是覆盖物?
原文:[百度地图API]如何判断点击的是地图还是覆盖物? 摘要:很多API爱好者问我,为什么我点击的是marker,而map也会响应该事件呢?怎样才能判断,我点击的是标注,还是地图呢?下面一起来看看. ...
- Archlinux YouCompleteMe+syntastic vim自己主动补全插件,显示缩进和状态栏美化,爽心悦目的vim
Archlinux 安装和配置vim补全插件YouCompleteMe的过程. 參考: https://github.com/Valloric/YouCompleteMe https://github ...
- RF1001: 各浏览器对 '@font-face' 规则支持的字体格式不同,IE 支持 EOT 字体,Firefox Safari Opera 支持 TrueType 等字体
http://w3help.org/zh-cn/causes/RF1001 http://blog.csdn.net/agileclipse/article/details/12450949 http ...
- ArcGIS Runtime SDKs v10.2.4最新(Android、iOS、OSX和.NET)
ArcGIS Runtime SDKs v10.2.4最新,它包含:Android.iOS.OS X和.NET四大平台,用户和开发人员可以登录Esri最新的SDK安装包.或者通过云盘下载(http:/ ...
- 浅谈 js 字符串 search 方法
原文:浅谈 js 字符串 search 方法 这是一个很久以前的事情了,好像是安心兄弟在学习js的时候做的练习.具体记不清了,今天就来简单分析下 search 究竟是什么用的. 从字面意思理解,一个是 ...
- sql性能
---正在运行的 select a.username, a.sid,b.SQL_TEXT, b.SQL_FULLTEXT from v$session a, v$sqlarea b where a ...