博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
错排问题
阅读量:5321 次
发布时间:2019-06-14

本文共 1111 字,大约阅读时间需要 3 分钟。

一个有n个元素的排列,若一个排列中所有的元素都不在自己原来的位置上,那么这样的排列就称为原排列的一个错排

求错排的个数的问题就被称为错排问题或更列问题

递推公式

对于一个长度为n的错排,将在第n个位置的元素(设为k)与第n个元素交换,

则序列可能为一个长度为n-1的错排+n 或长度为n-2的错排+n+k

又因为位置交换有(n-1)种情况

所以$D(n)=(n-1)*(D(n-1)+D(n-2))$

通项公式

设$D(n)=n!*N(n)$,则$N(1)=0,N(2)=\frac{1}{2}$

当$n\ge 3$时由递推公式可得$n!*N(n)=(n-1)(n-1)!*N(n-1)+(n-1)(n-2)!*N(n-2)$

两边同除$(n-1)!$得$n*N(n)=(n-1)*N(n-1)+N(n-2)$

$n*N(n)-n*N(n-1)=(-1)*N(n-1)+N(n-2)$

$N(n)-N(n-1)=-\frac{N(n-1)-N(n-2)}{n}=\frac{-1}{n}*(N(n-1)-N(n-2))=\frac{-1}{n}*\frac{-1}{n-1}*……*\frac{-1}{3}*(N(2)-N(1))=\frac{(-1)^n}{n!}$

同理$N(n-1)-N(n-2)=\frac{(-1)^{n-1}}{(n-1)!}$

$N(n)=N(n)-N(1)=\frac{(-1)^n}{n!}+\frac{(-1)^{n-1}}{(n-1)!}+……+\frac{(-1)^2}{2!}$

$D(n)=n!*(\frac{(-1)^n}{n!}+\frac{(-1)^{n-1}}{(n-1)!}+……+\frac{(-1)^2}{2!})=n!*\sum\limits_{i=2}^n\frac{(-1)^i}{i!}$

用容斥原理也可证明:

$\ge i$个位置不是错排的方案数就为$C_n^i*(n-i)!=\frac{n!}{i!}$

根据容斥原理可得$D(n)=n!*\sum\limits_{i=0}^n\frac{(-1)^i}{i!}$

因为$\frac{(-1)^0}{0!}+\frac{(-1)^1}{1!}==0$所以$n!*\sum\limits_{i=0}^n\frac{(-1)^i}{i!}=n!*\sum\limits_{i=2}^n\frac{(-1)^i}{i!}$

根据通项公式又可以推出一个递推公式

$D(n)=n*D(n-1)+(-1)^n$

转载于:https://www.cnblogs.com/bennettz/p/8301089.html

你可能感兴趣的文章
POJ 2503 Babelfish
查看>>
thinkphp系列:类的自动加载是如何设计的
查看>>
编写linux 命令行实用工具 shell命令
查看>>
###《More Effective C++》- 基础议题
查看>>
Silverlight自定义控件开发:温度计
查看>>
leecode刷题(30)-- 二叉树的后序遍历
查看>>
SQL Server 分区表补充说明
查看>>
codeforces D. Painting The Wall
查看>>
Springboot activemq 对象传递
查看>>
一些简单的网络流模型
查看>>
动态规划经典问题
查看>>
Eclipse with C++: "Launch failed. Binary not found."
查看>>
drupal中使用drush命令,快速批量的开启和关闭模块
查看>>
[转]理解Go语言中的nil
查看>>
正睿提高组2017模拟题二T2
查看>>
DataPipeline联合Confluent Kafka Meetup上海站
查看>>
JS apply的巧妙用法以及扩展到Object.defineProperty的使用
查看>>
sha1加密java代码
查看>>
hibernate 多对多双向关联
查看>>
Mysql自带的年月日函数
查看>>