错位排列

· · 个人记录

一个很简单的知识点~~

有一个n位的排列,没有a[i]=i的情况,问这样的排列一共有多少种

公式:f[i]=(i-1)*(f[i-1]+f[i-2])

证明:

当一个n位排列为错位排列时,可分两类情况:

  1. a[a[1]]=1$,这种类型的错位排列可以这样理解:除$a[1]$,$1$两个位置,其他位置相当于$f[n-2]$的情况,而$a[1]$可以为除1以外的的所有值。所以此种情况的值为$(i-1)*f[i-2]
  2. a[a[1]]\neq 1$,这种类型的错位排列可以这样理解,此错位排序的后n-1位原本本身是错位排列,然后将第1位与之后的任意一位交换。所以此种情况的值为$(i-1)*f[i-1]

合起来就得到:f[i]=(i-1)*(f[i-1]+f[i-2])