HDOJ 2086 RPG的错排

本文详细解析了错排问题的递推法求解过程,以1,2,3,4四个数为例,展示了如何通过错排规律生成错排序列,并通过递推公式计算任意数量数的错排数目。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

编程中: 错排问题(递推法解决)

一个排列使得所有的元素不在原来的位置上,则称这个排列为错排

以1,2,3,4四个数的错排为例,分析其结构,找出规律性的东西来

1 2的错排是唯一的,即2 1

1 2 3的错排有3 1 2,2 3 1。这二者可以看作是1 2错排,3分别与1,2换位而得的。



1 2 3 4的错排有 

  4 3 2 1,4 1 2 3,4 3 1 2, 

  3 4 1 2,3 4 2 1,2 4 1 3, 

  2 1 4 3,3 1 4 2,2 3 4 1。 

第一列是4分别与1,2,3互换位置,其余两个元素错排,由此生成的 

第二列是4分别与3,1,2(123的一个错排)的每一个数互换而得到的

第三列则是由另一个错排231和4换位而得到




设n个数1,2,…,n错排的数目为Dn ,任取其中一数i,数i分别与其他的n-1个数之一互换,其余n-2个数进行错排,共得 (n-1)Dn-2个错排。另一部分位数i以外的n-1个数进行错排,然后i与其中每个数互换得(n-1)Dn-1个错排。 

综合以上分析结果得递推关系 

D(n)=(n-1)*(D(n-1)+D(n-2)) (n>2)

    1           (n=2)

    0           (n=1)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值