浅析组合八题

Posted parauni-blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅析组合八题相关的知识,希望对你有一定的参考价值。

一、问题概述:

有一堆球与一堆盒子,要求每个球必须放进一个盒子,求总共有多少种放球的方法。
根据球与盒子的性质不同可以分为以下 (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 题答案为 (n!*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})




















以上是关于浅析组合八题的主要内容,如果未能解决你的问题,请参考以下文章

技术分析 | 浅析MySQL与ElasticSearch的组合使用

浅析索引

浅析几个题目

淘宝sku算法浅析

浅析母函数

android的hwc浅析