排列组合基本公式

基本原理

1.加法原理 

集合S=s1∪s2∪s3..sm且si∩sj=∅(i<>j)
则s=s1+s2+s3..sm

2.乘法原理

   s(a,b)
   取a有p种,取b有q种
   s=p*q

公式

1.对于集合s(没有重复元素):

   从s中n个元素中取r个排列的方案数p(n,r)=n!/(n-r)!
   从s中n个元素中取r个组合的方案数c(n,r)=n!/(n-r)!r!
   定理:1.c(n,r)=c(n,n-r)
           2.c(n,0)+c(n,1)+c(n,2)...+c(n,n)=2^n
           从二进制角度理解
           有n个0
           00000000000
           c(n,r)就是从n个0中去r个0赋值为1
           显然每一种取法都对应一个二进制数,从0000000(n个)到1111111(n个),转换位十进制从0到2^n-1,一共2^n个数

2.对于多重集

如果S是一个多重集,那么S的一个r排列是S的r个元素的一个有序排放.如果S的元素总个数是n(包含计算重复),那么S的n排列也将称为S的全排列.例如,如果S={2•a,1•b,3•c}那么acbc,cbcc都是4排列.

可重复的排列

如果S是一个多重集,它有K个不同的类型元素,每一个元素都有无穷重复个数,那么,S的r排列个数为k^r
如果S是一个多重集,它有K个不同的类型元素,各元素分别为n1,n2,…,nk个,那么,S的r排列个数为
            n!/(n1!*n2!*…*nr!) 

 可重复的组合 

 设S是一个具有k种类型元素的多重集,每种元素均具有无限的重复数.则S的r-组合数为c(r+k-1,r).

你可能感兴趣的:(算法)