【OI之路】02数论算法-3排列与组合

来源:互联网 发布:什么叫知世故而不世故 编辑:程序博客网 时间:2024/06/05 22:30

建议前往我的网站获得最佳体验。

2.3.1排列(在乎顺序)

全排列:n个人全部来排队,队长为n。第一个位置可以选n个,第二位置可以选n-1个,以此类推得:P(n,n)=n(n-1)(n-2)……3*2*1=n!(规定0!=1).
部分排列:n个人选m个来排队(m<=n)。第一个位置可以选n个,第二位置可以选n-1个,以此类推,第m个(最后一个)可以选(n-m+1)个,得:

2.3.2组合(不在乎顺序)

n个人m(m<=n)个出来,不排队,不在乎顺序C(n,m)。如果在乎排列那么就是P(n,m),如果不在乎那么就要除掉重复,那么重复了多少?同样选出的来的m个人,他们还要”全排”得到P(n,m),所以得:

组合数的性质1:C(n,k)=C(n-1,k)+C(n-1,k-1)
组合数的性质2:n&k==k 则c(n,k)为奇数,否则为偶数

2.3.3其他排列与组合

(1)圆排列

n个人全部来围成一圈为Q(n,n),其中已经排好的一圈,从不同位置断开,又变成不同的队列。所以:Q(n,n)*n=P(n,n)>>Q(n)=P(n,n)/n=(n-1)!

由此可知,部分圆排Q(n,r)=P(n,r)/r=n!/(r*(n-r)!)

(2)重复排列(有限)

k种不一样的球,每种球的个数分别是a1,a2,…ak,
设n=a1+a2+…+ak,这n个球的全排列数,为
n!/(a1!*a2!*...*ak!)

(3)重复组合(无限)

n种不一样的球,每种球的个数是无限的,从中选k个出来,
不用排列,是组合,为C(n+k-1,k)
证明:假设选出来的数(排好序)1<=b1<=b2<=b3……<=bk<=n
这题的难点就是=号,现在去掉=号,所以有:
1<=b1<b2+1<b3+2<b4+3……<bk+k-1<=n+k-1
中间还是k个数!不过已经不是b系列,而是c系列假设c[i]:=b[i]+i-1,所以1<=c1<c2<c3<c4……<ck<=n+k-1所以问题就开始转换为无重复组合问题,即在n+k-1个元素中选中k个的组合数C(n+k-1,k)。

(4)不相邻排列

1~n这n个自然数中选k个,这k个数中任何两个数不相邻数的组合有C(n-k+1,k)证明和(3)相同。

(5)错位排列(简称:错排)

先做一个小问题:5本书,编号分别是1,2,3,4,5,现在要把这5本书是放在编号1,2,3,4,5的书架上,要求书的编号和书架的编号不一样,请问有多少种不一样的放置方法?
例:胸口贴着编号为1,2,….n的n个球员分别住在编号为1,2,….n的n个房间里面。
现规定每个人住一个房间,自己的编号不能和房间的编号一样。
这就是错排问题。当n=3时,只能为312或231这两种。
题解:递推。刚开始所有球员都住在和自己编号一样的房间里面。然后错排开始了,第n个球员从第出来。
第一种情况:n想和i(1<=i<=(n-1))其中任何一个球员换房间,其他 n-2个人换房间的事情,他们就不管了。其他n-2个球员的的错排数为d[n-2],n可以和前面1~(n-1)对换,所以有(n-1)个d[n-2]。
第二种情况:n想和i(1<=i<=(n-1))其中任何一个球员换房间,但是n只想i住在第N个房间,而n不想住第I个房间。
可能你会这样想:那么n可以让i住在第I号房间里面,然后n住在房间J。抱歉,j(1<=j<=(n-1),j!=i)生气n为什么一开始就去找i不直接来找j,~~(╯﹏╰) ~~
没办法,n把自己胸口的编码N换成了I,他假装自己是i,然后错排1~n-1(也就是d[n-2])的时候参与进去,这样自己就不会呆在第i号房间了。
所以有(n-1)个d[n-1]。
如果理解了上面两个加蓝色的地方,那么错排的公式就出来了

同时也有
错位排列数列为0,1,2,9,44,265……

(6)Catalan数列

1:有2n个人排成一行进入剧场。入场费5元。其中只有n个人有一张5元钞票,另外n人只有10元钞票, 剧院无其它钞票,问有多少中方法使得只要有10元的人买票,售票处就有5元的钞票找零?
2:一位大城市的律师在她住所以北n个街区和以东n个街区处工作。每天她走2n个街区去上班。如果他从不穿越(但可以碰到)从家到办公室的对角线,那么有多少条可能的道路?
3:在圆上选择2n个点,将这些点成对连接起来使得所得到的n条线段不相交的方法数?
4:对角线不相交的情况下,将一个凸多边形区域分成三角形区域的方法数?
5:一个栈(无穷大)的进栈序列为1,2,3,..n,有多少个不同的出栈序列?
6:n个结点可够造多少个不同的二叉树?
7:n个不同的数依次进栈,求不同的出栈结果的种数?
其对应的序列为1,1,2,5,14,42,132,....===Catalan数列
该递推关系的解为