错排问题是组合数学中的问题之一。考虑一个有n个元素的排列,若一个排列中所有的元素都不在自己原来的位置上,那么这样的排列就称为原排列的一个错排。 n个元素的错排数记为Dn。 研究一个排列错排个数的问题,叫做错排问题或称为更列问题。
研究方法 枚举法、递推数列法
前者用于情况较少的情况;后者难以采用枚举法,这时可以用递归思想推导错排数的递推公式:
显然D1=0,D2=1。当n≥3时,不妨设n排在了第k位,其中k≠n,也就是1≤k≤n-1。那么我们现在考虑第n位的情况。
- 当k排在第n位时,除了n和k以外还有n-2个数,其错排数为Dn-2。
- 当k不排在第n位时,那么将第n位重新考虑成一个新的“第k位”,这时的包括k在内的剩下n-1个数的每一种错排,都等价于只有n-1个数时的错排(只是其中的第k位会换成第n位)。其错排数为Dn-1。
所以当n排在第k位时共有Dn-2+Dn-1种错排方法,又k有从1到n-1共n-1种取法,我们可以得到:
- D n=(n-1)(D n-1+D n-2)
摘自:http://zh.wikipedia.org/wiki/%E9%94%99%E6%8E%92%E9%97%AE%E9%A2%98
应用:
NYOJ 451 HDOJ 1462 HDOJ 2068 HDOJ2048神、上帝以及老天爷 题目链接地址:http://acm.hdu.edu.cn/showproblem.php?pid=2048
HDOJ2049不容易系列之(4)——考新郎 题目链接地址:http://acm.hdu.edu.cn/showproblem.php?pid=2049
例题: 光棍节的快乐 http://acm.nyist.net/JudgeOnline/problem.php?pid=451
分析:首先有N-M个人抽到自己的纸条,组合数;其次由于每个人的纸条不同,那么这M个人抽到的纸条可能会抽到不同的其他M-1个人的纸条,为错排.由乘法原理由结果为:错排*排列。
上代码……