球与盒子的组合问题

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

球与盒子的组合问题

1.n个相同的球装进m个不同的盒子,共多少种不同方法

显然,这是个排列组合里的隔板问题

如果要求每个盒子至少有一个球,则答案为C(m-1,n-1)

如果允许有盒子可空出来不装球,则答案为C(m-1,n+m-1)

这个问题可以引入一个比较经典的例子,就是对于方程

x1+x2+…+xn=a 的正整数解(或非负整数解)的解的个数,(a为正整数)

2.n个不同的球装进m个相同的盒子,共多少种不同方法

这个问题的一般形式:把n个不同元素划分成m个子集

是的,这就是第二类Stirling数,用递推的方法

S[n,m]=S[n-1,m-1]+m*S[n-1,m]

如果要求每个盒子至少有一个球,那么 answer=S[n,m]

如果允许有盒子可空出来不装球,那么

answer=S[n,1]+S[n,2]+…+S[n,m]

3.n个不同的球装进m个不同的盒子,共多少种不同的方法

如果要求每个盒子至少有一个球,对于这个问题直接用上面问题的answer*m!即可

如果允许有盒子可空出来不装球,留作思考吧~ 呵呵

4.n个相同的球装进m个相同的盒子,共多少种不同的方法

这是个经典的DP问题,先来讨论要求每个盒子至少有一个球的情况相当于把一个整数划n分成m个数,这m个数以升序排列

S[n,m,min]表示n分成m部分且最小的那部分min的方案数

那么S[n,m,min]=Sigma(S[n-min,m-1,i]) for i=min to

(n-min)/(m-1)

对于这个三维的状态,我们可以把它优化到二维

不要考虑min,假设最小的那个数是1,这样的话如果想把它加大,这样的方案数和这种情况等价:这个1不变而是把后面所有数减小1,这样就能表示所有情况了

比如12分成3部分,显然 3 4 5 和 1 2 3 等价, 2 5 5 和 1 4 4 等价。

所以就变成二维状态S[n,m]=S[n-1,m-1]+S[n-m,m],其中S[n,m]表示n分成m个部分,最小部分至少唯一,它等于最小部分为一

(S[n-1,m-1])的加上最小部分至少为二的(S[n-m,m])

据说,这道题还可以优化到一维,不过这要用到组合数学里的母函数知识,这里就不介绍了,思考思考吧~

对于允许有盒子可空出来不装球的情况,也思考思考吧~呵呵

元素分组又分为相同元素分组和不相同元素分组这两类问题。对于相同元素分组来说,如果是相同元素分到相同的组里,问题就变的没有意义,公考中也不会涉及到。那么对于相同元素分到不同的组里,一般我们就用插板法来解决。

【基本题型】

有n个相同的元素,要求分到m组中,并且要求每组中至少有一个元素问有多少种分法?

【基本解题思路】

将n个相同的元素排成一行,n个元素之间出现了(n-1)个空档,现在我们用(m-1)个“档板”插入(n-1)个空档中,就把n个元素隔成有序的m份,每个组依次按组序号分到对应位置的几个元素(可能是1个、2个、3个、4个、….),这样不同的插入办法就对应着n 个相同的元素分到m组的一种分法,这种借助于这样的虚拟“档板”分配元素的方法称之为插板法。

【基本题型例题】

【例1】共有10完全相同的球分到7个班里,要求每个班至少要分到一个球,问有几种不同分法?

解析一:我们首先用常规方法。若想将10个球分到7个班里,球的分法共三类:

第一类:有3个班每个班分到2个球,其余4个班每班分到1个球。这样,第一步,我们从7个班中选出3个班,每个班分2个球;第二步,从剩下的4个班中选4个班,每班分1球。其分法种数为:C (7,3)*C(4,4)=35

注明:由于排版的关系,我用C(n,m)和A(n,m)代替原来的组合与排列公式。

第二类:有1个班分到3个球,1个班分到2个球,其余5个班每班分到1个球。其分法种数:C(7,1)* C(6,1)* C(5,5)=42

第三类:有1个班分到4个球,其余的6个班每班分到1个球。其分法种数:

C(7,1)* C(6,6)=7

所以,10个球分给7个班,每班至少一个球的分法种数为:35+42+7=87(种)。

解析二:从上面的解题过程可以看出,用常规方法解这类题,需要分类计算,计算过程繁琐。并且如果元素个数较多的话处理起来就变得十分的困难了。因此我们需要寻求一种新的方法解决问题,也就是——插板法。

我们可以将10个相同的球排成一行,10个球之间出现了9个空隙,现在我们用6个档板”插入这9个空隙中,就“把10个球隔成有序的7份,每个班级依次按班级序号分到对应位置的几个球(可能是1个、2个、3个、4个),这样,借助于虚拟“档板”就可以把10个球分到了7个班中。

由上述分析可知,原问题就可以转化成:在9个空档之中插入6个“档板”(6个档板可把球分为7组)的问题,这是一个很简单的组合问题,其方法种数为:C(9,6)=84

【基本题型总结】

对于这种要求每组元素至少要分到一个的情况,则只需在n个元素的

n-1个间隙中放置m-1块隔板把它隔成m份即可,共有C(n-1,m-1)种不同方法。

【注意】

这种插板法解决相同元素分到不同组的问题非常简单,但同时也提醒各位考友,这类问题模型适用前提相当严格,必须同时满足以下3个条件:

(1)所有要分的元素须完全相同;

(2)所要分的元素必须分完,决不允许有剩余;

(3)参与分元素的每组至少分到1个,决不允许出现分不到元素的组。

这样对于很多的问题,是不能直接利用插板法解题的。但,可以通过一定的转变,将其变成符合上面3个条件的问题,这样就可以利用插板法解决,并且常常会产生意想不到的效果。

【基本题型的变形(一)】

相关文档
最新文档