zoukankan      html  css  js  c++  java
  • 排列数 组合数

    一、定义

    (n) 个不同元素种取出 (m(m≤n)) 个元素的所有不同排列(1234与4321属不同排列)的个数,叫做从 (n) 个不同元素种取出 (m) 个元素的排列数,用符号 (A_{n}^{m}) 表示。
    (n) 个不同元素种取出 (m(m≤n)) 个元素的所有不同组合(1234和4321属相同组合)的个数,叫做从 (n) 个不同元素种取出 (m) 个元素的组合数,用符号 (C_{n}^{m}) 表示。

    二、基础公式

    (A_{n}^{m}=frac{n!}{(n-m)!})
    (C_{n}^{m}=frac{n!}{(n-m)!*m!})
    (C_{n+1}^{m}=C_{n}^{m}+C_{n}^{m-1})
    (C_{n}^{m+1}=frac{n-m}{m+1}*C_{n}^{m} (C_{n}^{0}=1))

    三、常见恒等式

    (1) 二项式定理:((a+b)^n=sum_{i=0}^{n}{C_{n}^{i}}a^i*b^{n-i})

    (2) (sum_{i=0}^{n}{C_{n}^{i}}=2^n)

      法一:令二项式定理中 ((a+b)^n)(a=b=1)
         故 ((1+1)^n=sum_{i=0}^{n}{C_{n}^{i}}=2^n)
      法二:一个含有 (n) 个元素的集合总共有 (2^n) 个子集。
         含有 (0) 个元素的集合总共有 (C_{0}^{n})
         含有 (1) 个元素的集合总共有 (C_{1}^{n})
         含有 (2) 个元素的集合总共有 (C_{2}^{n})
         ......
         含有 (n) 个元素的集合总共有 (C_{n}^{n}) 个,故(2^n=sum_{i=0}^{n}{C_{n}^{i}})

    (3) (sum_{i=0}^{n}{2^{i}*C_{n}^{i}}=3^n)

      证法:令二项式定理中 ((a+b)^n)(a=2,b=1)
         故 ((1+2)^n=sum_{i=0}^{n}{2^{i}*C_{n}^{i}}=3^n)

    (4) (sum_{i=0}^{n}{(-1)^{i}*C_{n}^{i}}=0)

      法一:令二项式定理中 ((a+b)^n)(a=1,b=-1) ,
         故 ((1-1)^n=sum_{i=0}^{n}{(-1)^{i}*C_{n}^{i}}=0)
      法二:设 (T) 是一个有 (n) 个元素的集合,对 (T) 中的某一个元素 (a)
         从 (T) 中选取 (r) 个元素,从元素 (a) 的角度讲,这 (r) 个元素的组合只分包含 (a) 和不含 (a) 两类,
         假设 (r) 为奇数,那么假如 (r) 个元素中没有包含 (a) 则可以加入 (a) ;否则可以删去 (a)
         故每一个奇数的组合总能对应一个偶数的组合。
      推论(C_{n}^{0}+C_{n}^{2}+C_{n}^{4}+...=C_{n}^{1}+C_{n}^{3}+C_{n}^{5}+...)

    (5)(sum_{i=1}^{n}{i*C_{n}^{i}}=n*2^{n-1})

      证法:令二项式定理中 ((a+b)^n)(a=x,b=1)
         故((1+x)^n=sum_{i=0}^{n}{C_{n}^{i}*x^i})
         对左边取导得 (((1+x)^n)^{'}=n*(1+x)^{n-1}) ,
         对右边取导得 ((sum_{i=0}^{n}{C_{n}^{i}*x^i})^{'}=sum_{i=1}^{n}{C_{n}^{i}*x^{i-1}*i})
         分别带入 (x=1) ,由于函数相等,所以任意一点的斜率必然相等,即
         (n*2^{n-1}=sum_{i=1}^{n}{i*C_{n}^{i}})

    (6) (sum_{i=0}^{m}C_{n+i}^{i}=C_{n+m+1}^{m})

      证法:(C_{n+1}^{0}=C_{n}^{0}+0)
         (C_{n+2}^{1}=C_{n+1}^{1}+C_{n+1}^{0})
         (C_{n+3}^{2}=C_{n+2}^{2}+C_{n+2}^{1})
         ......
         (C_{n+m+1}^{m}=C_{n+1}^{m}+C_{n+1}^{m-1})
         将每个式子的左右分别相加,删去部分左边项与右边第二项即可发现 (sum_{i=0}^{m}C_{n+i}^{i}=C_{n+m+1}^{m})

    (7) (C_{n}^{k}*C_{k}^{m}=C_{m}^{n}*C_{m-n}^{m-k})

      证法:(C_{n}^{k}*C_{k}^{m}=frac{k!}{n!*(k-n)!}*frac{m!}{k!(m-k)!}=frac{m!}{n!*(k-n)!*(m-k)!}=frac{m!(n-m)!}{n!*(n-m)!*(k-n)!*(m-k)!}=C_{m}^{n}*C_{m-n}^{m-k})
    (持续更新)

  • 相关阅读:
    各种排序
    最大子数组的和与积
    字符串距离
    二叉树的基本操作
    C++11创建线程的几种方式
    二分查找
    汉诺塔问题
    读写锁实现
    全排列
    数字转汉字
  • 原文地址:https://www.cnblogs.com/parauni-blog/p/12617141.html
Copyright © 2011-2022 走看看