关注
献丑了。。不知道对不对,dp问题,dp[i][j]表示0-i个袋子装j个球的放法数
public class BallInPackage {
public int ballInPackage(int numsOfBags, int numsOfBalls)
{
int[][] dp = new int[numsOfBags][numsOfBalls + 1];
//initialization
for(int i = 0; i < numsOfBags; i++)
dp[i][0] = 1;
for(int i = 1; i <= numsOfBalls; i++)
dp[0][i] = 1;
//calculate the dp matrix
for(int i = 1; i < numsOfBags; i++) {
for(int j = 1; j <= numsOfBalls; j++) {
int nums = 0;
for(int k = 0; k <= j; k++)
nums += dp[i-1][k];
dp[i][j] = nums;
}
}
return dp[numsOfBags-1][numsOfBalls];
}
public int ballInPackage_Advanced(int numsOfBags, int numsOfBalls)
{
int[][] dp = new int[numsOfBags][numsOfBalls + 1];
//initialization
for(int i = 0; i < numsOfBags; i++)
dp[i][0] = 1;
dp[0][2] = 1; dp[0][3] = 1;
//calculate the dp matrix
for(int i = 1; i < numsOfBags; i++) {
for(int j = 1; j <= numsOfBalls; j++) {
if(j < 2)
dp[i][j] += dp[i-1][j];
else if(j == 2)
dp[i][j] += dp[i-1][j] + dp[i-1][j-2];
else if(j >= 3)
dp[i][j] += dp[i-1][j] + dp[i-1][j-2] + dp[i-1][j-3];
else
dp[i][j] = 0;
}
}
return dp[numsOfBags-1][numsOfBalls];
}
public static void main(String[] args) {
BallInPackage b = new BallInPackage();
System.out.println(b.ballInPackage(12, 20));
System.out.println(b.ballInPackage_Advanced(12, 20));
}
}
查看原帖
4 评论
相关推荐
查看19道真题和解析 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 为了去实习,我赌上了___ #
19577次浏览 199人参与
# 面试紧张时你会有什么表现? #
15683次浏览 130人参与
# 百融云创求职进展汇总 #
189次浏览 0人参与
# uu们,春招你还来吗? #
11612次浏览 81人参与
# 2025年终总结 #
12207次浏览 212人参与
# 哪一瞬间让你觉得“这班不如不上” #
10837次浏览 147人参与
# 父母对你找工作是助力还是阻力? #
13057次浏览 192人参与
# 十二月请对我好一点 #
24490次浏览 329人参与
# 一人推荐一个值得做的项目 #
8861次浏览 116人参与
# 高薪高压 vs 低薪wlb,你怎么选? #
10538次浏览 110人参与
# 第一份工作能做外包吗? #
85944次浏览 575人参与
# 总结:哪家公司最喜欢泡池子 #
155495次浏览 559人参与
# 降低公积金和取消房补怎么选 #
23385次浏览 79人参与
# 工作前VS工作后,你的心态变化 #
12894次浏览 155人参与
# 晒一晒你收到的礼盒 #
87897次浏览 429人参与
# 25届网易互娱暑实进度 #
91783次浏览 750人参与
# 工作中出现了XX情况正常吗 #
31473次浏览 209人参与
# 公司福利里最没用的一项是啥 #
6476次浏览 96人参与
# 从顶到拉给所有面过的公司评分 #
138274次浏览 505人参与
# 学历or实习经历,哪个更重要 #
202083次浏览 1070人参与
# 这些公司卡简历很严格 #
80255次浏览 367人参与