您的位置:首页 > 其它

错排公式

2016-04-25 20:04 267 查看

前言

错排公式,即把n本可区分书打乱使得每本书不在原本位置的方案数。

容斥原理得到的递推式

我在某题题解里讲过,现在复制过来。

设dp[i]表示i个元素的错排方案数。

什么意思呢?就是关于i的排列其中不存在任意的a[j]=j。

我们可以使用容斥原理:

例如dp
,其实就是要满足n个条件——第i个条件为a[i]!=i

那么合法方案数=至少不满足0个条件-至少不满足1个条件+至少不满足2个条件-至少不满足3个条件+……

也就是

dp[n]=∑ni=0(−1)i∗Cin∗(n−i)!

dp[n]=∑ni=0(−1)i∗n!i!∗(n−i)!∗(n−i)!

dp[n]=∑ni=0(−1)i∗n!i!

dp[n]=(−1)n+∑n−1i=0(−1)i∗n!i!

dp[n]=(−1)n+n∗∑n−1i=0(−1)i∗(n−1)!i!

dp[n]=(−1)n+n∗dp[n−1]

另一种递推式

如果i到了j,我们就让i向j连一条有向边。

合法的方案便是形成许多环且没有自环。

考虑dp
,有两种可能。

在n-1的图上,n随便连一条有向边到一个结点,然后连向这个结点的结点改为连向n。相当于把n并进了这个环。n可以连向的结点有n-1种可能。

在n-2的图上,增加一个大小为2的环,除了n以外另一个点的编号未知,有n-1种可能。

于是错排公式有了另一种递推式

dp[n]=(n−1)∗(dp[n−1]+dp[n−2])
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: