排列组合

来源:互联网 发布:java线程池编程实例 编辑:程序博客网 时间:2024/06/06 00:33
●相异元素不允许重复的排列组合数: 
   A(n,m)=n!/(n-m)!
   C(n,m)=n!/((n-m)!*m!)
   推广一下:
    C(n,m)=C(n-1,m-1)+C(n-1,m) 
    C(n,m+1)=C(n,m)*(n-m)/(m+1)


●有重复元素的排列数:
  设第i个元素有ki个,所有元素共n个,设排列数为x ,
  则 k1! * k2! * ... * kn! * x =n! 
 

●可重复选择的组合数:  
  C(n+m-1,m)
  推导貌似有点麻烦  ..


●不相邻元素组合:
  即从n个元素中中取出m个不相邻元素的方案数:
  C(n-m+1,m) 
 
 
●貌似还有什么均分不均分的组合的辅导书上都应该有  ..
 

●容斥原理: 
  
|A1+A2+……+An| =∑|Ai|- ∑|AiAj| + ∑|AiAjAk|-… +(-1)^n-1|A1A2…An|
  有点乱,换种写法:

   
A∪B∪C = A+B+C - A∩B - B∩C - C∩A + A∩B∩C  感觉这样好理解些   ..
  奇数集合前符号为正,偶数前为负 


●逐步淘汰原理(貌似又叫筛法公式):  
 |A1.A2…An|=|S|-∑|Ai|+∑|AiAj|- ∑|AiAjAk|+…+(-1)^n|A1A2…An|
  e.p:错排问题。
   问题描述:
     n个元素一次给以标号1,2,…,n进行全排列,求每个元素不再自己原来位置上的排列数Dn。
     Ans
= n! – C(n,1)(n-1)! + C(n,2)(n-2)!- … (-1)^i*C(n,n)0! = n!(1-1/1!+1/2!-…+(-1)^i*1/n!)
   也就是伯努利放错信笺问题  ..
F[n]=(n-1)*(f[n-1]+f[n-2]) 

//--------------------------------------------------------------------------------------------------
●各种染色公式:  
  线段:
   用m种颜色染同一线段上的n个点,任相邻两点不同色
   m(m-1)^(n-1)
 

  环形: 

   用m(m≥2)种不同的颜色给一个分成n个扇形的圆染色,且任何相邻2个区域染不同颜色.
   (m-1)^n + (-1)^n(m-1)
 

   用m(m≥2)种不同的颜色,给n(n≥4)个彼此相连的区域染色,且任何间隔1个区域的2个区域染不同的颜色.
    [(m-1)^(n/2)+(-1)^(n/2)(m-1)]^2,n偶数;
    (m-1)^n+(-1)^n(m-1),n
奇数.

   隔两个以上的有闲情的自己推吧  = =   ..
 

  车轮型:(环形中间再加一块 = =)
  用m(m≥2)种不同的颜色,给n+1(n≥2)个彼此相连的车轮型区域A0,A1,…,An染色,且任何相邻2个区域染不同颜色.
  m[(-1)^n*(m-2)+(m-2)^n]
  
  用m(m≥2)种不同的颜色,给n(n≥4)个彼此相连的区域染色,且任何间隔1个区域的2个区域染不同的颜色(不包括中间那个)
  
 m[(m-1)^(n/2)+(-1)^(n/2)(m-1)]^2,n偶数;
   m[(m-1)^n+(-1)^n(m-1)],
n偶奇数.
  

原创粉丝点击