zoukankan      html  css  js  c++  java
  • 我对“错排问题”的理解

    思路来自 百度百科 中的一段话:

    (n) 个数的错排方案数为 (D_n)

    第一步,考虑第 (n) 个元素,把它放在某一个位置,比如位置 (k) ,一共有 (n-1) 种放法;

    第二步,考虑第 (k) 个元素,这时有两种情况:

    (1)把它放到位置 (n) ,那么对于除 (n) 以外的 (n-1) 个元素,由于第 (k) 个元素放到了位置 (n) ,所以剩下 (n-2) 个元素的错排即可,有 (D_{n-2}) 种放法;
    (2)第 (k) 个元素不放到位置 (n) ,这时对于这 (n-1) 个元素的错排,有 (D_{n-1}) 种放法。

    根据乘法和加法法则,综上得到

    [D_n = (n-1) imes ( D_{n-2} + D_{n-1} ) ]

    然后我的理解是这样的,我把问题变成了下面的这样一个问题:

    假设现在有 (n) 对亲兄妹,(n) 个哥哥的编号为 (1 sim n), (n) 个妹妹的编号为 (1 ~ n),现在你要给这 (2 imes n) 个人凑成 (n) 对夫妻,要求亲兄妹不能结婚,求方案数?

    我们假设 (n) 对亲兄妹凑成 (n) 对夫妻的方案数为 (D_n),那么我们现在可以考虑:

    给我们 (n) 对亲兄妹,我现在要给编号为 (n) 的哥哥找媳妇,那么编号为 (1 sim n-1) 的妹妹都可以当做编号为 (n) 的哥哥地媳妇。

    假设我选择了编号为 (k) 的妹妹和编号为 (n) 的哥哥配对,则现在有编号为 (k) 的哥哥和编号为 (n) 的妹妹落单了。

    这个时候我有 (2) 种选择:

    选择一:编号为 (k) 的哥哥和编号为 (n) 的妹妹配对。

    这种情况下,其它的 (n-2) 对还需要错排,所以这种方式下的错排方案是 (D_{n-2})

    情景:(n)哥哥和(k)妹妹结婚去了,临走之前(n)哥哥做了一个媒,将自己的(n)妹妹嫁给了(k)哥哥。(凑成了 (2) 对,剩下 (n-2) 对)

    选择二:编号为 (k) 的哥哥和编号不为 (n) 的妹妹配对。

    这种情况下,就是编号为 (k) 的哥哥不能和编号为 (n) 的妹妹配对,那么这个时候就跟他们是亲兄妹是一样的。

    情景:(n)哥哥临走之前想要将自己的(n)妹妹嫁给(k)哥哥,但是被拒绝了,然后(n)哥哥说:“既然你不想娶她,那么你就跟她认一个兄妹吧”,然后(k)哥哥就变成了(n)妹妹的哥哥,然后就又变成了 (n-1) 对兄妹的错排问题。

    两种选择是互斥的,他们汇总之后就是在选择 (n) 哥哥和 (k) 妹妹的错排总方案:

    [D_{n-2} + D_{n-1} ]

    外加 (k) 一共有 (n-1) 种选择,根据乘法原理,错排问题的方案数:

    [D_n = (n - 1) imes ( D_{n-2} + D_{n-1} ) ]

  • 相关阅读:
    计算机图形学学习方法和相关书籍,做游戏,GIS,虚拟现实,三维引擎的都能够看看.
    HDU 1248 寒冰王座(全然背包:入门题)
    android widget 开发实例 : 桌面便签程序的实现具体解释和源代码 (上)
    Oracle varchar 字段排序问题
    Response.AddHeader使用实例
    Unity 3D 文件导入出错
    Sencha app build 出现 missing name after . operator 问题
    TFS(Team Foundation Server)介绍和入门
    较具体的介绍JNI
    Struts2学习笔记1
  • 原文地址:https://www.cnblogs.com/quanjun/p/12307873.html
Copyright © 2011-2022 走看看