码迷,mamicode.com
首页 > 其他好文 > 详细

排列组合 ——插隔板

时间:2017-05-10 01:11:10      阅读:269      评论:0      收藏:0      [点我收藏+]

标签:bsp   位置   enter   src   lang   部分   方向   span   多少   

                         排列组合

——插隔板

I.n个相同小球分成m部分,每部分可以没有球。

n+(m-1)个数中选择(m-1)次数作为隔板,其它的数作为小球。Count=C(n+m-1,m-1)。

 

II.n个相同的小球分成m部分,每部分至少有1个小球。

每个在相邻小球的中间,有n-1个隔板,从n-1个隔板中选取m-1个隔板,从而分成m部分。

Count=C(n-1,m-1)。

 

也可以认为:是提前从每部分提取1个小球,n个小球变为n-m个小球。可看成是把n-m个小球分成m部分,每部分可以没有球;然后把1个小球加入每部分,使每部分至少有一个球。

Count=C((n-m)+m-1,m-1)=C(n-1,m-1)

 

III. n个相同的小球分成m部分,每部分至少有k个小球。

2同理,提前从每部分提取k个小球,n个小球变为n-m*k个小球。可看成是把n-m*k个小球分成m部分,每部分可以没有球;然后把k个小球加入每部分,使每部分至少有k个球。

Count=C((n-m*k)+m-1,m-1)=C(n-m*(k-1)-1,m-1)

 

k=1,即变为情况II

 

IV.有n个座位依次从左到右排列,m个人选择座位,无其它要求。

1个人有n种选择,第2个人有n-1种选择,……,第m个人有n-m+1中选择。

Count=P(n,m)

 

V. 有n个座位依次从左到右排列,m个人选择座位,任意两个人不能相邻。

技术分享

 

m个(人+座位)插入n-m个空座位的左右两旁,第1个人有n-m+1种选择,第2个人有n-m种选择,……,第m个人有n-m+1-(m-1)中选择。

 

也可以认为:提前提取m-1个座位,n个座位变为n-m+1个座位。可看成有n-m+1个座位依次从左到右排列,m个人选择座位,无其它要求;然后把1个座位加入所有相邻(指的不是座位相邻,而是指一个人向左/向右看第一个看到的人)的两个人的中间(m-1个座位),使任意两个人能相邻。

Count=P(n-m+1,m)

 

VI. 有n个座位依次从左到右排列,m个人选择座位,任意两个人之间至少有k个空位。

提前提取(m-1)*k个座位,n个座位变为n-(m-1)*k个座位。可看成有n-(m-1)*k个座位依次从左到右排列,m个人选择座位,无其它要求; 然后把k个座位加入所有相邻(指的不是座位相邻,而是指一个人向左/向右看第一个看到的人)的两个人的中间((m-1)*k个座位),使任意两个人之间至少有k个空位。

Count=P(n-(m-1)*k,m)

k=1,即变为情况V

 

VII.有n个座位形成圆圈,m个人选择座位,无其它要求。

1个人有n种选择,第2个人有n-1种选择,……,第m个人有n-m+1中选择。如果不考虑圆的位置编号,则一个状态顺时针旋转k位(k=0,1,…,n-1),状态都相同,结果在原来基础上除以n。

考虑圆的位置编号:P(n,m)

不考虑圆的位置编号:P(n,m)/n

 

证明P(n,m)/n是正数:

n-k必能整除(n,k)【括号指的是两个数的最大公约数】,若(n,k)<>1, n能被数k(1<=k<=n)所约分【即n=n/(n,k)】,那么n能用n-k代替【即(n-k)= (n-k)/(n,k)】,最终(n,m)必是n的倍数。

 

VIII.有n个座位形成圆圈,m个人选择座位,任意两个人不能相邻。技术分享

技术分享            To  技术分享

 

考虑圆的位置编号:

定义一个人A所坐的座位编号为1,然后座位编号按照顺时针的方向从1到n递增,编号为n的座位与编号为1的座位连接起来。

在编号为1的座位的和编号为n的座位中间切一刀,变成编号为1,2,…,n的一排座位。其中第n个位置不能坐人,第2个位置不能坐人,因为任意两个人不能相邻,而第1个位置座位有人坐。

题目转变成n-3个座位,依次从左到右排列,m-1个人选择座位,任意两个人不能相邻。

Count1=P(n‘-m‘+1,m‘)=P((n-3)-(m-1)+1,m-1)=P(n-m-1,m-1)

A的编号可以为1,2,…,n,

Count2=n*P(n-m-1,m-1)

 

不考虑圆的位置编号:

即不考虑什么人坐编号为多少的位置,只考虑人之间的相对关系,如一个人的左边/右边是谁

m个人的位置顺时针旋转k位(k=0,1,2,…,n-1)【即第1个人的位置变为原来第(1+k)个人的位置,第2个人的位置变为第(2+k)个人的位置,依次类推】,有m种方案,但这里只看成1种方案,所以要除以m

Count3=n*P(n-m-1,m-1)/m

 

IX.有n个座位形成圆圈,m个人选择座位,任意两个人之间至少有k个空位。

考虑圆的位置编号:

定义一个人A所坐的座位编号为1,然后座位编号按照顺时针的方向从1到n递增,编号为n的座位与编号为1的座位连接起来。

在编号为1的座位的和编号为n的座位中间切一刀,变成编号为1,2,…,n的一排座位。其中第n个~第n-k+1个位置不能坐人,第2个~第k+1位置不能坐人,因为任意两个人之间至少有k个空位,而第1个位置座位有人坐。

题目转变成n-k*2-1个座位,依次从左到右排列,m-1个人选择座位,任意两个人之间至少有k个空位。

Count=P(n‘-(m‘-1)*k,m‘)=P((n-k*2-1)-((m-1)-1)*k,m-1)=P(n-m*k-1,m-1)

A的编号可以为1,2,…,n,

Count2=n*P(n-m*k-1,m-1)

 

不考虑圆的位置编号:

即不考虑什么人坐编号为多少的位置,只考虑人之间的相对关系,如一个人的左边/右边是谁

m个人的位置顺时针旋转k位(k=0,1,2,…,n-1)【即第1个人的位置变为原来第(1+k)个人的位置,第2个人的位置变为第(2+k)个人的位置,依次类推】,有m种方案,但这里只看成1种方案,所以要除以m

Count3=n*P(n-m*k-1,m-1)/m

k=1,即变为情况VIII。

 

排列组合 ——插隔板

标签:bsp   位置   enter   src   lang   部分   方向   span   多少   

原文地址:http://www.cnblogs.com/cmyg/p/6833356.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!