“n个球放到m个盒子”问题整理 | 您所在的位置:网站首页 › 插板法可以为空 › “n个球放到m个盒子”问题整理 |
n个球放到m个盒子
以8个球放到3个盒子为例
1 球同,盒同,可空
思路一:8个球放到3个盒子
取球最少盒子取0个球,取球第二少的盒子取[0,4] 取球最少盒子取1个球,取球第二少的盒子取[1,3] 取球最少盒子取2个球,取球第二少的盒子取[2,3] 一共5+3+2=10种 类似于 整数拆分 包含0 非递减序 8 = 0 + 0 + 8 + 1 + 7 + 2 + 6 + 3 + 5 8 = 1 + 1 + 6 + 2 + 5 + 3 + 4 8 = 2 + 2 + 4 + 3 + 3 思路二:有n个球,和m个盒子,我可以选择在所有盒子里面都放上1个球,也可以不选择这个操作, 如果选择了这个操作,那么就从dp[n-m][m]转移过来 如果没有选择这个操作,那么就从dp[n][m-1]转移过来 dp[n][m]:n个相同的球放入m个相同的盒子的放法 边界条件: k个球放入一个盒子只有一种放法:dp[k][1] = 1 一个球放入k个盒子只有一种放法:dp[1][k]=1 没有球只有一种放法(都不放):dp[0][k]=1 状态转移方程: dp[n][m] = dp[n][m-1] + dp[n-m][m] , n>=m dp[n][m] = dp[n][m-1] , n=0 k个不同球放入0个盒子,dp[k][0]=0, k>=1 n个不同球放入m个盒子,球不够,盒子会空,dp[n][m]=0, n |
CopyRight 2018-2019 实验室设备网 版权所有 |