放鸡蛋问题:相同元素分配到相同的空间
标签: C语言 放鸡蛋 相同元素 相同空间
by 小威威
1.引入
放鸡蛋问题就是指将相同元素分配到相同空间这一类问题。具体问题就是:现在有n个相同的鸡蛋,m个相同的篮子,将这n个鸡蛋分配到篮子中,且篮子可以为空,问一共有多少种分配方法?
我们的第一反应就是排列组合,而这一问题很类似于我们高中的隔板法。然而,如果你沿着这条思路,恐怕你就会走近进胡同却又浑然不知。
因为隔板法是针对相同元素分配到不同空间而设计的,注意,是不同空间。倘若篮子是不同的,那么就可以用隔板法来解决这一问题。而如今是相同篮子。也许你会说可以将结果除以某个组合数,但我是试过了,行不通,如果你能做到,欢迎在下面评论,或者私我,不胜感激。
但是,隔板法行不通并不意味着这道题和排列组合毫无关联,因为解这道题还是需要排列组合中的分类思想。
2.问题分析
现在有n个相同的鸡蛋,m个相同的篮子,将这n个鸡蛋分配到篮子中,且篮子可以为空,问一共有多少种分配方法?
拿到这道题,我们首先要进行第一次分类,也就是篮子数与鸡蛋数的大小关系。当鸡蛋数小于篮子数时,无论怎么放,都会有空篮子,并且篮子是相同的,不妨就将这几个篮子删去,即让篮子数等于鸡蛋数。此时,就能将鸡蛋数小于篮子数这一情况归于下面一种情况。当鸡蛋数大于等于篮子数时,此时要进行第二次分