错排问题-递推原理及容斥原理
来源:互联网 发布:java的stringbuffer 编辑:程序博客网 时间:2024/06/05 10:01
错排问题
当n个编号元素放在n个编号位置,元素编号与位置编号各不对应的方法数用M(n)表示,那么M(n-1)就表示n-1个编号元素放在n-1个编号位置,各不对应的方法数,其它类推.
第一步,把第n个元素放在一个位置,比如位置k,一共有n-1种方法;
第二步,放编号为k的元素,这时有两种情况⑴把它放到位置n,那么,对于剩下的n-1个元素,由于第k个元素放到了位置n,剩下n-2个元素就有M(n-2)种方法;⑵第k个元素不把它放到位置n,这时,对于这n-1个元素,有M(n-1)种方法;
综上得到
M(n)=(n-1)[M(n-2)+M(n-1)]
特殊地,M⑴=0,M⑵=1
下面通过这个递推关系推导通项公式:
为方便起见,设M(k)=k!N(k),(k=1,2,…,n)
则N⑴=0,N⑵=1/2
n>=3时,n!N(n)=(n-1)(n-1)!N(n-1)+(n-1)!N(n-2)
即 nN(n)=(n-1)N(n-1)+N(n-2)
于是有N(n)-N(n-1)=-[N(n-1)-N(n-2)]/n=(-1/n)[-1/(n-1)][-1/(n-2)]…(-1/3)[N⑵-N⑴]=(-1)^n/n!
因此
N(n-1)-N(n-2)=(-1)^(n-1)/(n-1)!
N⑵-N⑴=(-1)^2/2!
相加,可得
N(n)=(-1)^2/2!+…+(-1)^(n-1)/(n-1)!+(-1)^n/n!
因此
M(n)=n![(-1)^2/2!+…+(-1)^(n-1)/(n-1)!+(-1)^n/n!]
可以得到
错排公式为M(n)=n!(1/2!-1/3!+…..+(-1)^n/n!)
容斥原理
正整数1、2、3、……、n的全排列有n!种,其中第k位是k的排列有(n-1)!,当k取1、2、3、……、n时,共有n*(n-1)!种排列,由于是错排,这些排列应排除,但是此时把同时有两个数不错排的排列多排除了一次,应补上;在补上时,把同时有三个数不错排的排列多补上了一次,应排除;……;继续这一过程,得到错排的排列种数为
M(n)=n!-n!/1!+n!/2!-n!/3!+…+(-1)^n*n!/n!=sigma(k=2~n) (-1)^k*n!/k!
即M(n)=n![1/0!-1/1!+1/2!-1/3!+1/4!+..+(-1)^n/n!]
注:sigma表示连加符号,(k=2~n)是连加的范围
- 错排问题-递推原理及容斥原理
- 容斥原理应用--错排问题
- 错排问题 组合数学+容斥原理
- 错排【数学】【排列】【容斥原理】
- hdu6143Killer Names(组合递推+容斥原理)
- 哈理工OJ 1191 相亲(容斥原理—错排公式)
- UVA11806容斥原理,位运算排列,递推组合数
- UVALive 7040 Color (容斥原理 + 组合数学递推公式 + 求逆元 + 基础数论)
- NKOJ 2040 (CQOI 2011)放棋子(递推+容斥原理+组合数)
- UVALive 7040 Color 容斥原理 + 组合数学递推公式 +lucas
- UVALive 7040 Color (容斥原理 + 组合数学递推公式 + 求逆元 + 基础数论)
- 容斥的原理及广义应用
- CloudFoundry hm9000原理及排错
- NTP 排错 原理 及 其他
- 三集合容斥原理问题
- 错排问题的递推解决
- 错排问题的递推解决
- 递推中的错排问题
- OpenGL ES 2.0基本概念
- javascript js表示中文日期的经典写法
- tomcat 数据源配置
- OpenGL ES2.0 基本编程
- Android开发_拖动效果,旋转效果,两点放大缩小的实现
- 错排问题-递推原理及容斥原理
- ABAP开发工具概述
- Linux基本功十一:shell脚本执行及交互
- OpenGL ES2.0编程三步曲
- POJ 2255 Tree Recovery
- java第二课课堂笔记(基本数据类型)
- android内存优化
- asp.net(c#)从Cache对象删除项
- 宏的用法