转自:http://blog.csdn.net/liwen_7/article/details/7646451
n个有序的元素应有n!种不同的排列。
如果一个排列式的所有的元素都不在原来的位置,则称这个排列为错排。
任给一个n,求出1,2,……,n的错排个数Dn共有多少个。
递归关系:d[n]=(n-1)(d[n-1]+d[n-2]);
解释:
先知道什么是错排了吧。
第一步:
“错排”1号元素(将1号元素排在第2至第n个位置之一),有n-1种方法。
第二步:
“错排”其余n-1个元素,按如下顺序进行。
1*.如果第一步是把1号放在第k个位置,
我们在“错排”第k号元素的安放会有:
可以放到1号,留下的n-2个元素的错排就可以认为是D[n-2]
(我觉得这一步其实很好理解,因为他的条件和补全1号和k号是一样的,
用规范的语言就是:留下的n-2个元素在与它们的编号集相等的位置集上的错排)
2*如果k号元素不放在第一个位置:
这时可以把第一个位置看成第k个位置(也就是说本来可以放到k位置的元素,可以放到第一个位置),
于是形成(包括k号元素在内的)n-1个元素形成错排,会有D[n-1]种方法。
根据加法原理:第二步有D[n-2]+D[n-1]种;
最后:n个元素的错排总数D[n]=(n-1)(D[n-2]+D[n-1]);