当前位置:网站首页>完全背包问题求组合数和排列数
完全背包问题求组合数和排列数
2022-08-01 16:22:00 【北海冥鱼未眠】

这个是完全背包问题的典型应用,由于只是求个数,不涉及到零钱排列情况不一样算两次的情况,所以两层for循环,外层遍历物品,内层遍历背包。
class Solution {
public int change(int amount, int[] coins) {
int[] dp = new int[amount+1];
dp[0] = 1;
for (int coin : coins) {
for (int i = coin;i<= amount;i++){
dp[i] += dp[i-coin];
}
}
return dp[amount];
}
}

这个与上面一题唯一不同的一点就是有序,顺序不同算两次,所以这里两层for循环的遍历顺序是外层遍历背包,内层遍历物品。
class Solution {
public int combinationSum4(int[] nums, int target) {
int[] dp = new int[target+1];
dp[0] = 1;
for(int j = 1;j<=target;j++){
for(int i = 0;i<nums.length;i++){
if(j>=nums[i]) dp[j] += dp[j-nums[i]];
}
}
return dp[target];
}
}
关于背包问题,参考文章。
边栏推荐
猜你喜欢
随机推荐
指针进阶(二)
【paper】Cam2BEV论文浅析
Why should model.eval() be added to the pytorch test?
珠海市生物安全P3实验室主体结构封顶
第十三章 手动创建 REST 服务(一)
工业制造行业的低代码开发平台思维架构图
如何防止重复下单?
Using Canvas to achieve web page mouse signature effect
PAT 甲级 A1003 Emergency
kubelet节点压力驱逐
Zhaoqi Science and Technology Innovation Event Platform, Entrepreneurship Event Roadshow, Online Live Roadshow
【Unity,C#】哨兵点位循迹模板代码
好家伙,公司服务器直接热崩掉了!
链滴的几个 Markdown 语法没有渲染
The untiy Resources directory dynamically loads resources
MUI 做手机返回操作栏
ESP8266-Arduino编程实例-74HC595位移寄存驱动
探讨if...else的替代方案
【建议收藏】技术面必考题:多线程、多进程
30分钟成为Contributor|如何多方位参与OpenHarmony开源贡献?









