首页 > 试题广场 >

五个球从盒子里拿出来,打乱顺序放回去,均不在原位的排列数是多

[单选题]
五个球从盒子里拿出来,打乱顺序放回去,均不在原位的排列数是多少()
  • 36
  • 44
  • 32
  • 42
假设原排列为ABCDE,都不在原位的情况下,A的选座方式有四种,当A占了B的座时,B的选座方式分两种,1.B选A。 则余下的CDE有两种排列方式  。
2.B不选A。则有3*3种排列方式。因此答案为4*(2+3*3)=44种
发表于 2017-08-03 14:35:57 回复(0)

下面大神的讨论我看得有点晕,所以我也来补充说明好了,假设原来顺序是 ABCDE

第一种情况:A选任意位置,有4种可能。

------------------------------------------------------------

第二种情况:AB互换位置。

表示从AB_ _ _变成了BA_ _ _

剩下的CDE只可能有BADECBAECD两种可能

第三种情况:A选了B的位置,但是B不选A的位置。表示为 _ A B B B

因为不选A的位置只有三种可能,同时C在不选自己的位置加上两个位置已有人的情况下也有三种可能,在三个位置都决定的情况下剩下两个只能互换。

所以最终是4*(2+3*3)



发表于 2018-07-21 14:30:57 回复(0)
ABCDE,第一种,A位选C14,假设选B,B位选A,则其余三位还有两种,所以是8。
第二种总结为C14*C13,就是B位选A之外的三个,其余剩下的三位还有3种排列方式,C14*C13*3=36。
合为44种
发表于 2017-08-05 17:06:20 回复(0)
错排公式:D(n)=(n-1)*(D(n-1)+D(n-2)). n>=3;
                  D(1)=0, D(2)=1
理解:如果是A,B,....错排,则第一个A可能的情况是选择剩下的(n-1)个其中一个,则有(n-1)种可能性;例如当A 选了B 的,则B可能选A,或者不选A ;则当B 选了A ,则此时剩下的(n-2)个数又形成错排; 如果B没有选A ,则相当于包含B在内的(n-1)个数形成错排,即退出递归公式:D(n)=(n-1)*(D(n-1)+D(n-2))
发表于 2020-08-11 09:15:02 回复(0)
递归的思路如下:f(n)表示n个球都不在自己的位置
f(2)=1,
f(3)=A(3, 3)-C(3,1)*f(2)-1=2,全排列数减去一个在原位置剩余两个不在原位置,减去2个在原位置(也即都在原位置)
f(4)=A(4, 4)-C(4,1)*f(3)-C(4, 2)*f(2)-1=9,全排列数减去1个在原位置,减去2个在原位置,减去3个在原位置(也即都在原位置)
f(n)=A(n, n)-C(n, i)*f(n-i)[1<=i<=n-2]-1

发表于 2020-02-14 11:11:02 回复(0)

发表于 2019-10-11 14:24:11 回复(0)
A的位置有4种选择(除了A之外的4个字母)
1、B的位置被A占了:CDE三个位置因为要避免重复,所以只能有2种排列方式
2、B的位置没有被A占:则B的位置有3种选择,C的位置有3种选择(因为A在这3个里面,A无论在CDE的哪个位置上,都没有问题,只要A的位置定了,另外两个的位置肯定也定了,因为它们只能交换位置),所以是 3*3种

最后总共是 4*( 2 + 3*3)
发表于 2017-09-14 18:30:52 回复(0)
错排公式:
D(n) = (n-1) * ( D(n-1) + D(n-2) ),n>=3
且:D(1) = 0 , D(2) = 1 
发表于 2017-04-19 17:05:58 回复(2)
总排列数5! = 120,考虑相反情况
有1个在原位, 余下4个排列: 5C1 x 4! = 120
有2个在原位, 余下3个排列: 5C2 x 3! = 60
有3个在原位, 余下2个排列: 5C3 x 2! = 20
有4个在原位, 余下1个排列: 5C4 x 1! = 5
有5个在原位, 余下0个排列: 5C5 x 0! = 1
利用容斥原理, 相反情况共计120 - 60 + 20 - 5 + 1 = 76种,所求120 - 76 = 44 种
编辑于 2021-03-28 07:58:53 回复(0)
错位排列D5=44
发表于 2020-08-20 16:40:31 回复(0)
l = list(range(5))

res = []
def fun(tmp, start, end):
    if start == end:
        res.append(tmp.copy())
        return
    for i in range(start, end):
        tmp[start], tmp[i] = tmp[i], tmp[start]
        fun(tmp, start+1, end)
        tmp[start], tmp[i] = tmp[i], tmp[start]

fun(l, 0, 5)

num  = 0
for e in res:
    sign = False
    for i in range(5):
        if e[i] == i:
            sign = True
            break
    if not sign:
        num += 1

print(num)
编辑于 2019-05-27 09:52:23 回复(0)
容斥原理: A(5,5) - C(5,1)*A(4,4) + C(5,2)*A(3,3) - C(5,3)*A(2,2) + C(5,4)*A(1,1) - C(5,5)*A(0,0)=44
发表于 2018-08-21 14:26:38 回复(1)
错排公式

发表于 2018-07-26 14:06:28 回复(0)
错排公式 D(n)=(n-1)*(D(n-1)+D(n-2)) D(n)=n*D(n-1)+(-1)^n 公式1比较好理解; 公式2是我自己归纳的经验公式,自己也没有证明出来
编辑于 2018-07-24 12:58:57 回复(0)
没听过有这个公式。。。
发表于 2017-05-02 08:31:17 回复(0)
答案是B
            错排公式第5项
发表于 2016-11-30 22:48:32 回复(0)