zoukankan      html  css  js  c++  java
  • 口胡排列与组合

    排列

    排列是分顺序的,比如集合({1,2,3,4,5})
    我们需要选出(3)个数
    就是(5*4*3):第一次有五个位置可选,第二次有四个位置可选,第三次有三个位置可选

    是与顺序有关的,也就是((1,2,3))((3,2,1))是有本质上区别的

    所以我们有排列公式,一个集合(S)(|S|=n),选(m)个数的排列:

    [A_n^m=n!/(n-m)! ]

    组合

    组合是不分顺序的,还是那个集合

    ((1,2,3))((3,2,1))是没有本质上区别的,也就是这时一种方案

    我们定义(C_n^m),为一个集合(S)(|S|=n),选(m)个数的组合:

    [A_n^m=C_n^m*A_m^mlongrightarrow C_n^m=dfrac{n!}{m!(n-m)!} ]

    再来几个性质加深下理解:

    • (sumlimits_{i=0}^nC_i^j=C_{n+1}^{j+1})
      理解:枚举(j+1)的右端点(i+1),则相当于从(i)个点中选(j)个点

    • (sumlimits_{i=0}^n C_{n}^i(m-1)^{n-i}=m^n)
      理解:把(n)个有区别的小球丢进(m)个有区别的盒子,等同于从(n)个小球里选(i)个,剩下的丢进(m-1)个盒子了

    可重集合的全排列

    我们在数学上的集合定义是非重集,可信息学里常常又要处理可重集(集合里的元素可重复)

    比如集合((1,2,2,3,4,4)),这便是一个可重集

    而此时可重集的排列其实也是与选择顺序有关的,但选第二个跟选第三个本质上是相同的

    (|S|)(k)种数字,分别有(n_1,n_2...n_k)个,求全排列
    我们可以形象地理解为:我们留出(n)个空位,每次把一种数字插进去的组合

    [egin{aligned}\ ans&=C_n^{n_1}*C_{(n-n_1)}^{n_2}...*C_{(n-n_1-n_2...-n_{k-2})}^{n_{k-1}}*C_{n_k}^{n_k}\ ans&=dfrac{n!}{n_1!n_2!...n_k!}\ end{aligned}]

    例题

  • 相关阅读:
    集中式(SVN)和分布式(Git)版本控制系统的简单比较
    Mac 提示安装包已损坏
    React 获取 url 参数 —— this.props.match
    编写一个 Chrome 浏览器扩展程序
    webpack 配置学习笔记
    Python 进阶学习笔记
    Python 入门学习笔记
    (转)Unity3d各种坑
    unity3d 网页游戏客户端工程构建方案
    (转)在Unity3D的网络游戏中实现资源动态加载
  • 原文地址:https://www.cnblogs.com/y2823774827y/p/10577693.html
Copyright © 2011-2022 走看看