• 错排


    现有n本书按照顺序摆放,现要求重新排列,使得新的书的顺序中每一本书都不在原来的位置,求有多少种排列方式?
    定义:

    考虑一个有n个元素的排列,若一个排列中所有的元素都不在自己原来的位置上,那么这样的排列就称为原排列的一个错排

    将问题分为两个步骤

    把n本书的错排操作数记为D(n)

    步骤1

    先从n本书里面任意选一本书,下标为m,将m进行错排,可以从n-1个位置里任意选一个位置为k,那么有
    n-1种情况,此时编号为m的放到下标k位置,手里拿着下标为k的书
    下面对下标为k的书进行错排

    步骤2

    下标为k的书有两种选择

    • 直接选择放在下标m位置
    • 从除了位置m以及位置k的剩下的n-2个位置中选择一个位置
      方法1完成后,完成了2个错排,还有D(n-2)个书的错排
      方法2也就是完成了1个错排,将n-1那么就变成了步骤1
      有n-1本书,手里拿着下标为k的书,把下标变成m,这本书不能放在下标为m的地方为D(n-1)

    结论

    • 和组合数一起运用,n个元素有m数字错排

    [C_n^m * D_m ]

    • 全错配递推公式

    [D(n)= (n - 1) * [D(n - 1) + D(n - 2)] \ D(1) = 0, D(2) = 1]

    模板

    void getd(){
        d[1] = 0, d[2] = 1;
        for(int i = 3; i <= 26; i++){
            d[i] = (i - 1) * (d[i - 1] + d[i - 2]);
        }
    }
    
  • 相关阅读:
    liunx命令二
    移动App专项测试
    web安全性测试用例
    jmeter分布式测试的坑(转)
    全新linux中通过编译方式安装nginx
    Centos的yum源更换为国内的阿里云源
    配置spotlight连接linux服务器
    linux创建新用户并给予root权限
    linux下安装sar
    liunx中安装禅道
  • 原文地址:https://www.cnblogs.com/Emcikem/p/11884773.html
Copyright © 2020-2023  润新知