请看下面的问题描述:把M个同样的乒乓球放在N个同样的盒子里,允许有的盒子空着不放,问共有多少种不同的分法?(注意必须是不同的分法,例如M=7,N=3时,三个盒子分别放5个、1个、1个这种情况,和三个盒子分别放1个、1个、5个这种情况视同相同放法)这里采用动态规划求解该问题。引入二维数组c,其中c[i][j]表示将i个乒乓球放在j个盒子里的不同的方案个数,请给出状态转移方程及边界条件,并给出用动态规划法求解该问题的核心函数(即为二维数组c填充的函数),并分析该函数的时间复杂度。提示:如果乒乓球数大于等于盒子数,则有两种可能,一种是至少有一个盒子没有装乒乓球,一种是每个盒子都至少装了一个乒乓球,那么从所有的盒子中拿走一个乒乓球,不影响放法的数量。如果乒乓球数i小于盒子数j,必然至少有j-i个盒子没有乒乓球。边界条件考虑四种情况,1、没有盒子的时候,不存在放法;2、只有1个盒子时,所有的乒乓球只能放在这个盒子;3、没有乒乓球的时候,所有的盒子都是空的,4、只有一个乒乓球时,某个盒子放一个乒乓球,其他盒子没有乒乓球。[/i]
引入二维数组c,其中c[i][j]表示将i个乒乓球放在j个盒子里的不同的方案个数,状态转移方程为:c[i][j]=c[i][j-1]+c[i-j][j],i>=jc[i][j]=c[i][i],i<j边界条件:c[i][1]=1intDP(intm,intn){//c[m][n]表示m个苹果放n个盘子里面的方案数int**c=newint*[m+1];for(inti=0;i<m+1;i++){c[i]=newint[n+1];memset(c[i],0,sizeof(int)*(n+1));}for(inti=0;i<m+1;i++){//c[i][0]=1;//如果没有盘子c[i][1]=1;//如果只有1个盘子,不管有多少个苹果,都只能把这些苹果放在这里盘子里}for(intj=0;j<n+1;j++){c[1][j]=1;//如果只有1个苹果,那么不管多少个盘子,都只有一个方案,就是1个盘子装1个苹果,剩下的盘子装0个苹果c[0][j]=1;//如果没有个苹果,那么不管多少个盘子,都只有一个方案,就是每个盘子装0个苹果}for(inti=2;i<m+1;i++){for(intj=2;j<n+1;j++){//如果苹果数大于等于盘子数,则有两种可能,//一种是至少有一个盘子没有装苹果,此时c[i][j]=c[i][j-1]//一种是每个盘子都至少装了一个苹果,那么从所有的盘子中拿走一个苹果,不影响放法的数量,此时c[i][j]=c[i-j][j];//综合上述两种情况,当苹果数i大于等于盘子数j时,有c[i][j]=c[i][j-1]+c[i-j][j];if(i>=j){c[i][j]=c[i][j-1]+c[i-j][j];}//如果苹果数i小于盘子数j,必然有j-i个盘子没有苹果,此时c[i][j]=c[i][i];else{c[i][j]=c[i][i];}}}intans=c[m][n];for(inti=0;i<m+1;i++){delete[]c[i];}delete[]c;returnans;}[/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i]
举一反三
- $n$个球放到$m$个盒子里,根据球和盒子是否有区别以及是否允许有空盒有$2^3=8$种放球问题:求如下问题的放球方案数(下方有选项,请填入对应选项的字母)1) $n$个球有区别,$m$个盒子有区别,允许有空盒<br/>______
- 若干个盒子排成一排。小华把50多个同样的乒乓球分别放在盒子中。其中只有l个盒子里没有乒乓球,然后他有事离开了。这时,小壮从每个有乒乓球的盒子里各取出l个乒乓球放在空盒子里,再把盒子重排一下,结果小华回来没发现有人动过这些盒子和里面的乒乓球。则共有()个盒子? A: 10 B: 11 C: 12 D: 13
- 将 3 个球随机地投入 4 个盒子中,求事件的概率:[tex=0.714x1.0]J/aA9EEo0KmJFnWWfX7LmQ==[/tex]——任意 1 个盒子中有 2 个球,其它任意 1 个盒子中有 1 个球.
- 设第一个盒子中装有 3 个蓝球,2 个绿球,2 个白球;第二个盒子中装有 2 个蓝球, 3 个绿球,4个白球,独立地分别在两个盒子中各取 1 个球。求至少有 1 个蓝球的概率。
- 设第一个盒子中装有 3 个蓝球,2 个绿球,2 个白球;第二个盒子中装有 2 个蓝球, 3 个绿球,4个白球,独立地分别在两个盒子中各取 1 个球。已知至少有 1 个蓝球,求有 1 个蓝球 1 个白球的概率。
内容
- 0
将个球随意放入()个盒子中,每个盒子可以放任意多个球,则恰有个盒子各有一球的概率为( )。516779baf0b932bc05b7a0e8519e0929.gif293cfc1b08bb44fe1d35791d5e62a51c.gif8f840b72b000acf4f14a672970e1f25d.gif516779baf0b932bc05b7a0e8519e0929.gif
- 1
中国大学MOOC:现有n个盒子,若每2个盒子里都恰有1个相同颜色的球,每种颜色的球恰好有2个,并放在不同盒子里,请问这n个盒子里的球共有多少种不同的颜色?
- 2
把n个完全相同的球随机地放入N个盒子中(即球放入盒子后,只能区别盒子中球的个数,不能区别是哪个球进入某个盒子,这时也称球是不可辨的).如果每一种放法都是等可能的,求某一指定的盒子恰好有k个球的概率.
- 3
将 n 个完全相同的小球随机地放人 N 个不同的盒子 (n<N) ,设每个盒子都足够大, 可以容纳任意多个球。求:(1) n 个球都在同一个盒子里的概率(2) n 个球都在不同的盒子里的概率;(3) 某指定的盒子中恰好有 [tex=3.786x1.357]4fVgWMAdk9lwAHB7a3MFnWUUSLclbPRtmvlZzPifkt8=[/tex] 个球的概率.
- 4
将 3 个球随机放入 4 个盒子中(假定盒子充分大),求没有球的盒子数 [tex=0.857x1.0]N7iCrOsS+NNEUUlnsYCi1g==[/tex] 的分布律.