蒟蒻小学奥数没学好,补补以前的知识,顺带学习一下圆排列,为初赛做准备

排列组合

概念

排列组合是组合学最基本的概念。所谓排列,就是指从给定个数的元素中取出指定个数的元素进行排序。组合则是指从给定个数的元素中仅仅取出指定个数的元素,不考虑排序。排列组合的中心问题是研究给定要求的排列和组合可能出现的情况总数。
新的改变

解读

\quad诸君若是感觉抽象,可通过此例来理解。
\quad从集合{a,b,c}中取2个元素的排列有ab,ac,bc,cb,ca,ba。取2个元素的组合有:{a,b},{a,c},{b,c}。\{a, b, c\}\ 中取2个元素的排列有ab, ac, bc, cb, ca, ba。 取2个元素的组合有:\{a, b\}, \{a, c\}, \{b, c\}。{a,b,c} 中取2个元素的排列有ab,ac,bc,cb,ca,ba。取2个元素的组合有:{a,b},{a,c},{b,c}。 正如引用所言, 排列要考虑排序,组合不考虑排序

定义 & 公式

排列

从n个不同元素中,任取m(m≤n,m与n均为自然数,下同)个不同的元素按照一定的顺序排成一列,叫做从n个不同元素中取出m个元素的一个排列;从n个不同元素中取出m(m≤n)个元素的所有排列的个数,叫做从n个不同元素中取出m个元素的排列数,用符号 A(n,m)表示。

PS:原来的排列符号为A(Arrangement),不过现在信息竞赛中多用符号P(Permutation)表示

考虑排列时,第一个位置有1种选择,第二个位置有2个选择,以此类推,第m个位置有n-m+1种选择,得:
Pnm=∏n−m+1n=∏1n∏1n−m=n!(n−m)!P_{n}^{m}=\prod_{n-m+1}^n=\frac{\prod_1^n}{\prod_{1}^{n-m}}=\frac{n!}{(n-m)!}Pnm​=n−m+1∏n​=∏1n−m​∏1n​​=(n−m)!n!​

组合

个不同元素中,任取m(m≤n)个元素并成一组,叫做从n个不同元素中取出m个元素的一个组合;从n个不同元素中取出m(m≤n)个元素的所有组合的个数,叫做从n个不同元素中取出m个元素的组合数。用符号 C(n,m) 表示。

考虑组合时,对于n个不同的元素,取m个元素的排列时PnmP_n^mPnm​,但每一个排列都有m!个排列与此排列属于同一组合。
感觉抽象的话见下例:
排列abc,acb,bac, bca,cab,cba在组合意义上不考虑排序,所以上是相同的,因此
Cnm=Pnmm!=n!m!(n−m)!C_n^m=\frac{P_n^m}{m!}= \frac {n!}{m!(n-m)!}Cnm​=m!Pnm​​=m!(n−m)!n!​

组合的其它递推式与定理

  • Cnm=Cnn−mC_n^m=C_n^{n-m}Cnm​=Cnn−m​
    \quad考虑n个元素选m个元素为一个组合,剩下的n-m个元素则可以作为另一个组合,所以有多少种取出m个不同元素的方式,就有多少种剩下n-m个不同元素的方式,所以:
    Cnm=Cnn−mC_n^m=C_n^{n-m}Cnm​=Cnn−m​
  • Cnm=Cn−1m+Cn−1m−1C_n^m=C_{n-1}^m+C_{n-1}^{m-1}Cnm​=Cn−1m​+Cn−1m−1​
    \quad不含第n个数的组合方案数是Cn−1mC_{n-1}^mCn−1m​, 含第n个数的组合方案数是Cn−1m01C_{n-1}^{m01}Cn−1m01​,所以:
    Cnm=Cn−1m+Cn−1m−1C_n^m=C_{n-1}^m+C_{n-1}^{m-1}Cnm​=Cn−1m​+Cn−1m−1​
    PS:上式就是著名的杨辉三角理论,同时也是杨辉三角递推式,与二项式定理息息相关,可蒟蒻毕竟是蒟蒻,在此暂时不展开,改日再加入二项式定理相关理解

循环排列

理解排列,就是将n个数中挑几个数出来放在一条长度为m的线上,看看有多少种方案数使得线上的元素与任一其他方案数上线上的元素不相同。线性排列已经讨论过,那如果是一个圆呢?
见下图:百度百科是个好东西(悄悄咪咪)

通过图看出,圆上有m个元素,不管如何旋转组成当前圆的元素不变,则循环排列的定义为:

循环排列(circular permutation)亦称圆排列、环排列等。是排列的一种,指从n个不同元素中取出m(1≤m≤n)个不同的元素排列成一个环形,既无头也无尾。两个循环排列相同当且仅当所取元素的个数相同并且元素取法一致,在环上的排列顺序一致。

若是看不同百科解释,我相信大家不介意蒟蒻用一句最简单一句话来解释:一个圆排列如果可以通过旋转得到另一个圆排列,则认为则两个圆排列相同。
对于M-循环排列,使其变为线性排列,有M个不同的切的位置,所以M可变为M可不同的线性排列,所以n个不同元素的M-循环排列的个数是:
Cnmm=n!(n−m)!⋅m\frac{C_n^m}{m}=\frac{n!}{(n-m)!\cdot m}mCnm​​=(n−m)!⋅mn!​

例题 ?

【NOIP2014 提高组初赛】
有数字1,1,2,4,8,8所组成的不同的四位数的个数是_102_.

(1)1,1,2,4四个数字组成的不同数字是P42P_4^2P42​。第一步可能就有读者会问,排列,不是针对不同元素的吗?此处有两个1,为什么还会用到排列呢?
我们这样来想,在一个存在两个不同数位上有相同数字的数中,把这两个数位上的数字上的数字调换位置,是不是不会影响这几个数字所组成数的大小呢?例如,1214,交换两个1,还是1214。所以我们就从四个位置种,找到2,4放置不同位置的方案数,剩下两个1,1就将其填进去就好了,例如_2_4,第一,三位没有数字,填1,变为1214。
注意:_2_4和_4_2所组成的数分别是1214,1412,所以交换同样的位置上放数字,但放的数字不同,也会影响答案。这不刚好符合排列数需要考虑排序的这一定义吗?
所以P42=12P_4^2=12P42​=12表示2,4的不同排放方案的方案数,同理
1、1、2、8;1、4、8、8;
1、1、4、8;2、4、8、8;
1、2、8、8;
各需要 12 种, 12 * 6 = 72(种)
(2)1、2、4、8组成,有A(4,4)=4×3×2×1=24(种)
(3)1、1、8、8组成,有C(4,2)=6(种), 此处与(1)大同小异,只不过把2,4换成了两个相同的数,所以不考虑排序,所以使用组合数
最后:72+24+6=102(种)

排列(Permutation) 组合(Combination)相关推荐

  1. 深入浅出统计学 第六章 排列与组合

    内容简介 本章内容主要介绍了两个基本概念,排序与组合 其中组合是之后计算二项分布的预备知识 对于计算而言,重点在于理解其所适应的不同情况,并记忆公式. 两者区别(P261): 1. 排列与顺序有关 2 ...

  2. Permutation test(排列(组合)检验)

    2019独角兽企业重金招聘Python工程师标准>>> 对Permutation test 的首次描述可追溯到上个世纪30年代, Fisher( 1935) 和Pitman( 193 ...

  3. 多重集合的排列和组合问题

    多重集合的排列和组合问题 标签: permutationn2c扩展 2012-04-17 16:18 5671人阅读 评论(0) 收藏 举报  分类: 算法(12)  版权声明:本文为博主原创文章,未 ...

  4. 排列与组合的Java递归实现 (参考)

    我们在笔试面试过程中经常会遇到关于排列与组合的问题,其实这些可以通过递归简单的实现,看下面两个例子: (1)关于字符串排列的问题 输入一个字符串,打印出该字符串中字符的所有排列.例如输入字符串abc, ...

  5. 排列公式和组合公式_排列与组合:排列公式与组合公式之间有什么区别?

    排列公式和组合公式 Here's the short version. 这是简短的版本. Let's take ringing bells in a church as an example. 让我们 ...

  6. java排列和组合算法

    package com.louisgeek.price;/*** 排列和组合算法* @author Administrator**/ public class CaseTest {public sta ...

  7. 通用的非递归排列和组合算法[附源码]

    动机 Apache Math包中有很多关分布的算法,但是没有找到排列组合相关的算法.索性自己写一个.排列组合可以分两个算法: 组合算法,就是在一个数组中取出m(小于等于数组的长度 n)个对象,有多少中 ...

  8. 回溯算法团灭子集、排列、组合问题

    回溯算法团灭子集.排列.组合问题 一.子集 给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集). 说明:解集不能包含重复的子集. 示例: 输入: nums = [1,2,3] ...

  9. 数学基础知识-排列与组合

    文章目录 前言 一.分步乘法原理 1.定义 2.举例 二.排列 1.定义 2.计算公式 3.举例分析 4.公式推导过程 三.组合 1.定义 2.计算公式 3.举例分析 4.其他一些规定和转换 总结 前 ...

  10. java 实现组合_用Java实现排列、组合算法

    组合个数的计算公式如下: 那么,计算排列或组合的数量,通过上面的公式就很容易就算出来了,其Java的实现如下: /** * 计算阶乘数,即n! = n * (n-1) * ... * 2 * 1 * ...

最新文章

  1. linux bash字符串截取
  2. 闪电网络运行过程中存在的一些问题
  3. Percona5.6自身已支持杀死慢SQL
  4. 20岁以后的男人应该知道的一些事,看一看吧
  5. Spark _13_topN
  6. 正则表达式及其在python上的应用
  7. 英特网rst服务器未在运行,技术员示范win7系统提示“英特尔(R)RST服务未在运行”的详细办法...
  8. html字体阴影怎么设置6,css怎么设置字体阴影
  9. Magento: Beginner’s Guide(书籍推荐)
  10. 02数据库表的相关操作
  11. CC++初学者编程教程(3) 安装VS2010 boost标准库开发环境
  12. JVM-class文件完全解析-字段表集合
  13. easyui textbox获取焦点事件
  14. 联发科MT6763/MT6763T/MT6750T/MT6755 (P10)芯片处理器对比哪个好?规格参数是多少?
  15. VMware安装Fedora 35 Workstation及使用体验
  16. win7-去掉快捷方式小箭头.bat
  17. ubuntu 8.04下安装yEd
  18. 木瓜从林。。。。。。。。。。。。。。。。。
  19. 织梦dedecms 幻灯片 自定义设置
  20. 计算机专业学生如何写一份优秀的校招简历(大三、研二学生请进)

热门文章

  1. 硬盘发展史之机械硬盘
  2. 腾讯通、第一企信、imo云办公室、263云通信哪家强
  3. 关闭windows锁屏,提升开机速度
  4. Sigma algebra
  5. Android Notes | 集成推送那点事(友盟/Mob(Flutter)/FCM)
  6. 怎么修改CSDN的个性签名或者个人说明?
  7. 计算机科学系班服主题,高校流行班服“设计风”
  8. Qt 5.7 亮瞎眼的更新
  9. 计算机的硬盘配额如何更改,磁盘配额是什么怎么设置
  10. 使用VSCode打开html文件是空白,在文件夹大小也是0KB解决方法