问题描述
有n个信封和n个信件,第ii个信件属于第i个信封,我们想知道,有多少种不同的方法,使得没有任何一个信件被装入正确的信封中?
思路
采用递推法。 假设当信和信封的个数为n时,错位排列的个数记为 f ( n ) f(n) f(n) 。
假设第n封信装入了第i个信封,i 可以取 [1, n-1]
。 那么接下来有两种情况:
1 . 第i封信装入了第n个信封 : 此时还剩下 n - 2 个序号对应的信和信封,此时对应信和信封数为n-2时的错位排列数 f ( n − 2 ) f(n -2) f(n−2)。
2 . 第i封信没有装入第n个信封 : 此时还剩下了 n-1 封信和信封,但是序号为 i 和 n 的信和信封出现了错位: i号信封 和 n号信 已经被排除, 但是 第 i 号信
和 第 n 号信封
还存在。 但是巧妙的是,因为情况的约束,第 i 封信
此时不能放入 第 n 号信封
, 事实上也构成了一个 个数为 n - 1 的错位排列 f ( n − 1 )