错位排列
定义
每个数都不在自己位置的排列,简称 错排。
形式化的讲就是 若排列
f
1
,
f
2
,
…
,
f
n
f_1,f_2,\ldots,f_n
f1,f2,…,fn, 对于每个
i
i
i,有
f
i
≠
i
f_i \neq i
fi=i 则这个排列
f
f
f 是一个错排
递推求解错排
问: n n n 个数的错排有多少种?
我们不妨设
d
p
n
dp_n
dpn 表示
n
n
n 个数的排列有多少种。
我们考虑最后的一个数
n
n
n,他有
n
−
1
n-1
n−1 个位置可以选择,假设他选了第
x
x
x 位。
那么对于这个 x x x 他有两种选择:
- 排在 n n n 号位置上
- 不排在 n n n 号位置上
如果他排在
n
n
n 号位置上,那么其余数的方案和
n
−
2
n-2
n−2 个数的错排是等价的。
如果他排在
n
n
n 号位置上,相当于其余
n
−
1
n-1
n−1 个数,每个数都不能排在自己的位置上(对于
x
x
x 相当于不能排在
n
n
n 号位置上)
因此总方案: d p n = ( n − 1 ) ( d p n − 1 + d p n − 2 ) dp_n = (n - 1)(dp_{n-1}+dp_{n-2}) dpn=(n−1)(dpn−1+dpn−2),特别的 d p 1 = 0 , d p 2 = 1 dp_1=0, dp_2=1 dp1=0,dp2=1