错排问题

来源:互联网 发布:瓶中船的制作材料淘宝 编辑:程序博客网 时间:2024/04/30 14:17

错排问题的描述:n个有序的元素有n!中不同的排列。若一个排列使得所有的元素都不在原来的位置上,则称这个排列为错排。那么问题来了!!!给出n,错排方案的数目为多少?设n个数错排方案数为D[n]。

错排问题可以使用递推的方法解决:

从1,2,……,n,数i分别与其他n-1个数之一互换,其余n-2个数进行错排,共得到(n-1)*D[n-2]。另一部分为数i意外的n-1个数进行错排,然后i与其中每一个数互换得(n-1)*D[n-1]个错排。然后又加法原理得出递归关系式:

                          D[n] = (n-1)*(D[n-1] + D[n-2])  ,D[1]=0,D[2]=1

注意:当n很大时,D[n]可能会很大,有时需要用long long 或高精度整数。

相关的题目:hdu 1465 ; hdu 2048;hdu 2049;hdu 2068等。

1 0