• 浅析组合八题


    一、问题概述:

    有一堆球与一堆盒子,要求每个球必须放进一个盒子,求总共有多少种放球的方法。
    根据球与盒子的性质不同可以分为以下 (8)

    Problem 球是否相同 盒子是否相同 是否允许空盒子
    A 0 0 0
    B 0 0 1
    C 0 1 0
    D 0 1 1
    E 1 0 0
    F 1 0 1
    G 1 1 0
    H 1 1 1

    根据题目难度,建议开题顺序为 (B ightarrow E ightarrow F ightarrow C ightarrow D ightarrow A ightarrow H ightarrow G)

    二、问题解析

    B

    解法:假设当前放第 (i) 个球。
       由于球与球、盒子与盒子之间是不同的,所以第 (i) 个球放在任意一个不同的盒子都是一种完全独立的分支。
       所以答案为 (m^n)

    E & F

    解法:由于球相互之间是相同的,所以我们只关心每一个盒子里的球的数量。
       只要有一个盒子的球数不同于之前的任何一种,那这就是一种全新方案。
       设第 (i) 个 盒子内放 (x_i) 个球,所以 (x_1+x_2+x_3+...+x_m=n)
       所以 E 题转化为方程的正整数解组数,F 题转化为方程的非负整数解组数。
       所以 E 题答案为 (C_{n-1}^{m-1}) ,F题答案为 (C_{n+m-1}^{m-1})

    C & D & A

    解法:由于球互不相同,所以我们可以把问题转化为 第 (i) 个球是否独处 两种情况。
       设 (S_j^i) 表示 (i) 个不同的球放在 (j) 个相同的盒子里,且盒子不允许空的方案数。
       当第 (i) 个球独处时,我们可以假设它一定处于 (k) 盒子中(因为盒子是相同的),故对答案的贡献是 (S_{j-1}^{i-1})
       当第 (i) 个球群居时,在不放它的基础上的某一种做法再在任意一个盒子里加入它都是一种全新的放法,故对答案的贡献是 (j*S_{j}^{i-1})
       当有不同的空盒数量时,方案一定不同。即允许空盒子的方案包含了空盒子从(0 - m-1)的所有方案。
       当盒子互不相同时,且不允许空盒子时,对应 C 的每一种方案,我们都可以通过全排列得到 A 的 (m!) 种方案。
       综上:C 题答案为 (S_m^n=S_{m-1}^{n-1}+m*S_{m}^{n-1}) 递推,D 题答案为 (sum_{i=1}^{m}S_i^n) ,A 题答案为 (m!*S_m^n)

    H & G

    解法:先考虑 H 题。
       设 (F_j^i) 表示 (i) 个相同的球放在 (j) 个相同的盒子里,且盒子允许为空的方案数。
       由于球和盒子均相互相同,故我们先假设所有盒子最终均按照所含球数的降序排列。
       如是,当最后一个盒子非空时,其余盒子均非空。那么我们可以将方案根据最后一个盒子是否为空来分类。
       要求最后一个盒子不空可以通过预留实现。即 (F_j^i=F_{j-1}^{i}+F_{j}^{i-j})
       当不允许空盒子时,可以先提前预留出每个盒子中所必须的那个球,再如上去做。
       综上:H 题答案为 (F_j^i=F_{j-1}^{i}+F_{j}^{i-j}) 递推 , G 题答案为 (F_j^{i-j})

  • 相关阅读:
    2013年3月1日星期五
    2013年2月26日星期二本地图片预览
    2013年3月2日星期六
    2013年第10周三低潮
    2013年第9周日见同学
    header发送Cookie
    HTTP Cookie header 中setcookie格式
    多台服务器共享session问题
    PHP中header头设置Cookie与内置setCookie的区别
    session原理及实现共享
  • 原文地址:https://www.cnblogs.com/parauni-blog/p/12633650.html
Copyright © 2020-2023  润新知