错排算法

来源:互联网 发布:python .如何使用 编辑:程序博客网 时间:2024/05/20 14:43
这个排列组合真心纠结,想了一天多。还是没想明白,百度了下。学数学的都是天才啊,羡慕不来。
下面说说错排推导。

当n个编号元素放在n个编号位置,元素编号与位置编号各不对应的方法数用M(n)表示,那么M(n-1)就表示n-1个编号元素放在n-1个编号位置,各不对应的方法数,其它类推.

第一步,把第n个元素放在一个位置,比如位置k,一共有n-1种方法;

第二步,放编号为k的元素,这时有两种情况⑴把它放到位置n,那么,对于剩下的n-1个元素,由于第k个元素放到了位置n,剩下n-2个元素就有M(n-2)种方法;⑵第k个元素不把它放到位置n,这时,对于这n-1个元素,有M(n-1)种方法;

综上得到

M(n)=(n-1)[M(n-2)+M(n-1)]

特殊地,M⑴=0,M⑵=1

换一个就是n-1中排序,其中分为两种,相互交换和不相互交换。所以n个元素的错排就是 (n-1)*(相互交换+不相互交换) 递推 递推。嗷,头痛啊。错排算法

0 0
原创粉丝点击