课程学习-组合数学
2015-10-07 15:14
861 查看
现主要记录新学习的东西。
1.圆排列
从n个中取r个的圆排列的排列数为P(n,r)/r , 2≤r≤n。
2.多重全排列
乒乓球入洞游戏:共有6个洞,洞口每次每次只能进入一个乒乓球,一组编号为1-9的9个乒乓球滚入洞口的方案有多少?
可以理解为六个洞=5个隔板分为留个空间,加上9个球一共14个待排列的项,14!.然后5个隔板是相同的,再除以5!.因此总共14!/5!.
3.可重组合
可重组合模型:取r个无标志的球,n个有区别的盒子,每个盒子允许放多于一个球,或者空盒。
组合数C(n+r-1,r)。记住是r个球,n个有区别的盒子。
4.不相邻组合
不相邻的组合是指从A={1,2,…n}中取r个不相邻的数进行组
合(不可重),即不存在相邻的两个数j, j+1的组合
共C(n-r+1,r)种组合方式
例 某保密装置须同时使用若干把不同的钥匙才能打开。 现有7人,每人持若干钥匙。须4人到场,所备钥匙才能 开锁。
• 问①至少有多少把不同的锁?
• ②每人至少持几把钥匙?
分析:由于4个人到场才能开锁,因此任意三个人都凑不出一把完整的钥匙,C(7,3) = 35把钥匙。
任意4个人都不缺钥匙,任一人对于其他6人中的每3人,
都至少有1把钥匙与之相配才能开锁。
所以每人至少:C(6.3) = 20把钥匙。
5.字典序的下一个
839647521的下一个。
从后往前找,第一个下降的的数是4,与后面最小大于它的数5交换->839657421,然后将5之后的数按照递增排列即839651247.
6.一个题,我做出来了,但是不是很清楚答案的方法
8个人排队买票,4个人拿着10元,4个人拿着20元,票价10元,售票处一开始没有钱,请问能够顺利买票的排队方案数。
令n=4,假定用2n维0,1向量来表示一种排队状态,令该向量为(a1a2…a2n),其中ai=0,1,i=1,2,…,2n,ai=1表示第i位顾客持10元的票款,ai=0表示第i位顾客持20元的票款。
这样有n个0元素,n个1元素的向量,共有C(2n,n)个。
每一个向量可以和从(0,0)点到达(n,n)点的路径一一对应,即从(0,0)点出发,ai=0表示沿x轴走了一个单位, ai=1表示沿y轴走了一个单位。为了保证顾客能顺利地买到票,不出现找不出10元的情况,路径上各点必须满足x≤y的情况。
问题等价于求从(0,0)点到(n,n)点的路径中,不穿越y=x线的数目,根据上面描述,可知x≤y。我们这样来想,将y=x向右平移一个单位,得到x-y=1,则原来对应的路线都不穿过x-y=1这条直线,如果原来的路径穿过了x=y,则也穿过了x-y=1。对每一条穿过x-y=1的路径,做(0,0)点到第一个接触点关于x-y=1的对称格路,得到一条从(1,-1)到达(4,4)的格路。从(0,0)到达(4,4)的穿过x=y格路与从(1,-1)到达(4,4)的格路(必穿过x-y=1)一一对应,是必须穿过x-y=1这条线的,所以通过减法法则,可知满足条件的路径条数为:
C(2n,n)−C(2n,n−1)=C(8,4)−C(8,3)=14
又排队买票的人是不同的,所以排队方案数是14x4!x4!=8064。
我摔!到最后居然是卡特兰数。。前几天看数据结构刚刚看到的,贴一下详细证明过程的链接吧。
http://blog.csdn.net/super_chris/article/details/6113779
1.圆排列
从n个中取r个的圆排列的排列数为P(n,r)/r , 2≤r≤n。
2.多重全排列
乒乓球入洞游戏:共有6个洞,洞口每次每次只能进入一个乒乓球,一组编号为1-9的9个乒乓球滚入洞口的方案有多少?
可以理解为六个洞=5个隔板分为留个空间,加上9个球一共14个待排列的项,14!.然后5个隔板是相同的,再除以5!.因此总共14!/5!.
3.可重组合
可重组合模型:取r个无标志的球,n个有区别的盒子,每个盒子允许放多于一个球,或者空盒。
组合数C(n+r-1,r)。记住是r个球,n个有区别的盒子。
4.不相邻组合
不相邻的组合是指从A={1,2,…n}中取r个不相邻的数进行组
合(不可重),即不存在相邻的两个数j, j+1的组合
共C(n-r+1,r)种组合方式
例 某保密装置须同时使用若干把不同的钥匙才能打开。 现有7人,每人持若干钥匙。须4人到场,所备钥匙才能 开锁。
• 问①至少有多少把不同的锁?
• ②每人至少持几把钥匙?
分析:由于4个人到场才能开锁,因此任意三个人都凑不出一把完整的钥匙,C(7,3) = 35把钥匙。
任意4个人都不缺钥匙,任一人对于其他6人中的每3人,
都至少有1把钥匙与之相配才能开锁。
所以每人至少:C(6.3) = 20把钥匙。
5.字典序的下一个
839647521的下一个。
从后往前找,第一个下降的的数是4,与后面最小大于它的数5交换->839657421,然后将5之后的数按照递增排列即839651247.
6.一个题,我做出来了,但是不是很清楚答案的方法
8个人排队买票,4个人拿着10元,4个人拿着20元,票价10元,售票处一开始没有钱,请问能够顺利买票的排队方案数。
令n=4,假定用2n维0,1向量来表示一种排队状态,令该向量为(a1a2…a2n),其中ai=0,1,i=1,2,…,2n,ai=1表示第i位顾客持10元的票款,ai=0表示第i位顾客持20元的票款。
这样有n个0元素,n个1元素的向量,共有C(2n,n)个。
每一个向量可以和从(0,0)点到达(n,n)点的路径一一对应,即从(0,0)点出发,ai=0表示沿x轴走了一个单位, ai=1表示沿y轴走了一个单位。为了保证顾客能顺利地买到票,不出现找不出10元的情况,路径上各点必须满足x≤y的情况。
问题等价于求从(0,0)点到(n,n)点的路径中,不穿越y=x线的数目,根据上面描述,可知x≤y。我们这样来想,将y=x向右平移一个单位,得到x-y=1,则原来对应的路线都不穿过x-y=1这条直线,如果原来的路径穿过了x=y,则也穿过了x-y=1。对每一条穿过x-y=1的路径,做(0,0)点到第一个接触点关于x-y=1的对称格路,得到一条从(1,-1)到达(4,4)的格路。从(0,0)到达(4,4)的穿过x=y格路与从(1,-1)到达(4,4)的格路(必穿过x-y=1)一一对应,是必须穿过x-y=1这条线的,所以通过减法法则,可知满足条件的路径条数为:
C(2n,n)−C(2n,n−1)=C(8,4)−C(8,3)=14
又排队买票的人是不同的,所以排队方案数是14x4!x4!=8064。
我摔!到最后居然是卡特兰数。。前几天看数据结构刚刚看到的,贴一下详细证明过程的链接吧。
http://blog.csdn.net/super_chris/article/details/6113779
相关文章推荐
- Codeforces Round #324 (Div. 2) 584A. Olesya and Rodion
- 泛型编程之特性(traits)
- 绝对路径和相对路径
- iOS开发- 处理空字符串
- defer与async
- linux/ubuntu下安装nginx时./configure后出现几种错误的解决方法
- Linux Shell中的变量-环境变量
- Linux安装JDK
- Java多线程 循环打印ABC 10次
- LintCode "Copy Books"
- jsp中的重定向(不同的跳转方式)
- 移动端 META
- BufferedReader的简单示例
- 软考专项复习总结(一)
- PageRank笔记
- Java模块化:jigsaw初体验
- 国内开源镜像站点汇总
- 【Python】Learn Python the hard way, ex15 读取文件
- 导航一体机更换其他导航软件
- android之读取xml文件中的数据和创建