放球问题 组合数学 转自百度百科

放球问题是指把 n个球放到 m个盒子里的方案数。它是组合数学的一个非常重要的问题。根据球是否相同,盒子是否有区别,是否允许有空盒以及n与m 的大小关系,放球问题可分成 16 个子问题。不同情况总结见下表。

1,n 个球有区别,m 个盒子有区别,允许有空盒,n≥m≥1

由于可以有空盒,所以每个球可以放到m个盒子的任意一个盒子里。又因为盒子是有区别的,所以对于任意一个球有m种不同的选择。 n个球是有区别的,所以总共有

种方案。比如,当n=3 时,第 1 个球有m种不同选择,第 2 个球有m种不同选择,第3个球有m种不同选择,据乘法法则总共有

种方案。

2. n 个球有区别,m 个盒子有区别,允许有空盒,m>n≥1。

由于可以有空盒,所以每个球可以放到m个盒子的任意一个盒子里。又因为盒子是有区别的,所以对于任意一个球有m种不同的选择。n个球是有区别的,所以总共有

种方案。

3. n 个球有区别,m 个盒子无区别,无空盒,n≥m≥1
  根据 [1]  中第二类司特林数的定义,n个有区别的球放到m个相同的盒子中,要求无一空盒,其不同的方案数为S(n,m)。

4. n 个球有区别,m 个盒子无区别,无空盒,m>n≥1
  由于m>n,而n个球至多可放入n个盒子里,所以必定有空盒。故满足此条件的方案数为 0。
  5. n 个球有区别,m 个盒子有区别,无空盒,n≥m≥1
  对于这个问题,可以先假设m个盒子是无区别的,这样根据 3 可知总共有S(n,m)种不同的方案数。然后再把m个盒子进行全排列,所以总共有m!S(n,m)种方案。
  6. n 个球有区别,m 个盒子有区别,无空盒,m>n≥1
  由于m>n, 而n个球至多可放入n个盒子里,所以必定有空盒。故满足此条件的方案数为 0。
  7. n 个球有区别,m 个盒子无区别,允许有空盒,n≥m≥1
  因为允许有空盒,我们可以设非空的盒子数是k个。则问题变成n个有区别的球放到k个无区别的盒子里,要求无一空盒。据3可知,总共有S(n,k) 种方案。因为n≥m, k的取值范围是[1, m], 所以共有S(n, 1) + S(n, 2) + …… + S(n, m)种方案。

8. n 个球有区别,m 个盒子无区别,允许有空盒,m>n≥1
  因为允许有空盒,我们可以设非空的盒子数是k个。则问题变成n个有区别的球放到k个无区别的盒子里,要求无一空盒。据3可知,总共有S(n,k) 种方案。因为m>n, k的取值范围是[1, n], 所以共有S(n, 1) + S(n, 2) + …… + S(n, n)种方案。

9. n 个球无区别,m 个盒子有区别,允许有空盒,n≥m≥1
  先介绍允许重复的组合的概念。允许重复的组合是指从集合A={1,2,……,n}中取r个元素{

},

并且允许当

时,

.例如A={1,2,3}, 取A中2个元素作允许重复的组合,除了不重复的{1,2}, {1,3}和{2,3}外,还包含{1,1}, {2,2}, {3,3}。根据 [1]  可知,在n个不同的元素中取r个作允许重复的组合,其组合数为C(n+r-1, r)。设m个不同的盒子构成集合M。每次从集合M中取出n个元素作允许重复的组合。若组合中,第i个盒子出现了k次(n≥k≥0),则表示第i个盒子中有k个球。因此问题可表示为 从m个不同的元素中取n个作允许重复的组合,其方案数为C(m+n-1, n)。

也可利用“插板法”来理解。假设n个球和m-1个板放到n+m-1个位置,第1个板前的放进第一个盒子,第i-1个版和第i个版之间的球放进第i个盒子,则共有C(m+n-1,n)种放法。由于此时板可以连续放,故对应允许有空盒的情况。

10. n 个球无区别,m 个盒子有区别,允许有空盒,m>n≥1

此问题可表示为从m个不同的元素中取n个作允许重复的组合,其方案数为C(m+n-1, n)。

11. n 个球无区别,m 个盒子有区别,无空盒,n≥m≥1
  由于要求无空盒,而且n个球无区别,所以先取出m个球放入m个盒子里。此时,这个问题可转化为求将(n-m)个无区别的球放入m个有区别的盒子里,允许有空盒的方案数。这 个 问 题 就 变 成 了 9 所 解 决 的 问 题 。 因此有C(m+(n-m)-1, n-m)=C(n-1, n-m)=C(n-1, n-1-(n-m))=C(n-1,m-1)种方案。

12. n 个球无区别,m 个盒子有区别,无空盒,m>n≥1
  由于n<m,而n个球至多可放入n个盒子里,所以必定有空盒。故满足此条件的方案数为 0。
  13. n 个球无区别,m 个盒子无区别,允许有空盒,n≥m≥1
  此问题相当于把n个球分成k堆,其中m>=k>1。根据 [1]  中2.9 节的推论:设n≥m,n拆分成最多m个数的和的拆分数等于将n拆分成最大数不超过m的拆分数。据上述推论可把问题转化为把整数n拆分成最大数不超过m的拆分数。而把整数拆分成最大不超过m的拆分数

的母函数为

故满足条件的方案数等于把n用{1,2,...,m}进行拆分的拆分数,等于G(x)的

项系数。
  14. n 个球无区别,m 个盒子无区别,允许有空盒,m>n≥1
  此问题相当于把n个球分成k堆。其中m>=k>1且n>=k>1。又因m>n,所以k的取值范围为n>=k>1。
  据13 可知此问题可转化为把整数n拆分成最大数不超过n的拆分数。而把整数拆分成 最 大不 超 过n的 拆 分 数的母函数为

故满足条件的方案数等于把n用{1,2,...,n}进行拆分的拆分数,等于G(x)的

项系数。

15. n 个球无区别,m 个盒子无区别,无空盒,n≥m≥1
  我们可先将每个盒子放一个球,然后利用类比13题,即

满足条件的方案数等于G(x)的

项系数。

16. n 个球无区别,m 个盒子无区别,无空盒,m>n≥1
  由于n<m, 而n个球至多可放入n个盒子里,所以必定有空盒。故满足此条件的方案数为0。

n个球是否有区别
  
m个盒是否有区别 是否允许空盒 n是否大于m 方案数 简要解释
  是

每个球有m种可能

每个球有m种可能

类比盒无区别时,再乘以盒的可能排列

盒比球多,必有空盒

枚举有球盒的数量,再利用斯特林数

枚举有球盒的数量,再利用斯特林数
  

根据斯特林数定义

盒比球多,必有空盒

  

插板法或根据可重组合计算公式

同上

先给每盒放一球,然后利用n-m个球,m个盒子有空盒的解

盒比球多,必有空盒

  

的系数

母函数方法

的系数

母函数方法

的系数

母函数方法

盒比球多,必有空盒

原文地址:https://www.cnblogs.com/l609929321/p/9555155.html

时间: 2024-10-10 10:07:34

放球问题 组合数学 转自百度百科的相关文章

给公司做百科通不过?企业百度百科不知道怎么做?百科技巧大揭秘!

其实是这样的,我从13年到现在已经有5年的营销经验了.我第一份实习工作是在百度.能在百度待,仿佛对于很多人来讲,是个很牛的事情(其实,我单方面并没有觉得这件事能有多牛.) 所以,以至于到现在,还有很多人问我关于百度百科创建的相关内容.比如: "我创建了半个月的百度百科,为啥现在还没通过?" "不花钱,我现在能做好百度百科吗?" "我从哪才可以找到靠谱的百度百科创建的服务商呢?" 鉴于很多人问我类似的问题,我打算给大家普及一下关于百度百科的相关知识

盒子放球

盒子放球问题 第一类: 将k个球放入n个不同的盒子中,每个盒子放球数>=0,求方法数 假设n个盒子分别放x1,x2,x3...xn,则x1+x2+x3+...+xn=k,令yi=xi+1(1<=i<=n),则yi>=1且y1+y2+...+yn=n+k,相当于求yi这个方程的解组数,可以看成插板问题,往n+k个物品中插入n-1个板,所以答案是C(n+k-1,n-1)=C(n+k-1,k) /* *输入说明:k个相同的球放入n个不同的盒子 *输入每行有两个正整数n和k */ int

盒子放球的DP

URAL1114 题目大意: 有N个盒子,有红色和蓝色两种颜色的球.红球有A个,篮球有B个.现在随意的向盒子里放球, 每个盒子可以放一种颜色的球,也可以放两种颜色的球,也可以不放球.球不必全都放进盒子里.问:总共有多少种方法. 状态dp[i][j][k] 表示向i个盒子里放j个篮球和k个红球的方案数目 状态转移方程:dp[i][j][k]=对dp[i-1][jj][kk] (0<=jj<=j,0<=kk<=k) 求和 最终结果是:在n个盒子里放  不定数目的球的种类数和即   对d

[Python爬虫] Selenium获取百度百科旅游景点的InfoBox消息盒

前面我讲述过如何通过BeautifulSoup获取维基百科的消息盒,同样可以通过Spider获取网站内容,最近学习了Selenium+Phantomjs后,准备利用它们获取百度百科的旅游景点消息盒(InfoBox),这也是毕业设计实体对齐和属性的对齐的语料库前期准备工作.希望文章对你有所帮助~ 源代码 1 # coding=utf-8 2 """ 3 Created on 2015-09-04 @author: Eastmount 4 """ 5

python爬虫—爬取百度百科数据

爬虫框架:开发平台 centos6.7 根据慕课网爬虫教程编写代码 片区百度百科url,标题,内容 分为4个模块:html_downloader.py 下载器 html_outputer.py 爬取数据生成html模块 html_parser 获取有用数据 url_manager url管理器 spider_main 爬虫启动代码 spider_main.py 1 #!/usr/bin/python 2 #-*- coding: utf8 -*- 3 4 import html_download

多线程爬取百度百科

前言:EVERNOTE里的一篇笔记,我用了三个博客才学完...真的很菜...百度百科和故事网并没有太过不一样,修改下编码,debug下,就可以爬下来了,不过应该是我爬的东西太初级了,而且我爬到3000多条链接时,好像被拒绝了...爬取速度也很慢,估计之后要接触一些优化或者多进程,毕竟python是假的多线程.本博客参照代码及PROJECT来源:http://kexue.fm/archives/4385/ 源代码: 1 #! -*- coding:utf-8 -*- 2 import reques

Python开发简单爬虫(二)---爬取百度百科页面数据

一.开发爬虫的步骤 1.确定目标抓取策略: 打开目标页面,通过右键审查元素确定网页的url格式.数据格式.和网页编码形式. ①先看url的格式, F12观察一下链接的形式;② 再看目标文本信息的标签格式, 比如文本数据为div class="xxx", ③ 容易看到编码为utf-8 2.分析目标 目标: 百度百科python词条 入口页: http://baike.baidu.com/item/Python词条页面url格式:/item/**** 数据格式: 标题: <dd cl

bzoj 4874: 筐子放球

4874: 筐子放球 Time Limit: 10 Sec  Memory Limit: 256 MB Description 小N最近在研究NP完全问题,小O看小N研究得热火朝天,便给他出了一道这样的题目: 有 n 个球,用整数 1 到 n 编号.还有 m 个筐子,用整数1到m编号. 每个球只能放进特定的两个筐子之一,第 i 个球可以放进的筐子记为 Ai 和 Bi . 每个球都必须放进一个筐子中. 如果一个筐子内有奇数个球,那么我们称这样的筐子为半空的. 求半空的筐子最少有多少个. 小N看到题

微信电影票_百度百科

微信电影票_百度百科 微信电影票编辑