当前位置:网站首页>完全背包问题求组合数和排列数
完全背包问题求组合数和排列数
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];
}
}
关于背包问题,参考文章。
边栏推荐
猜你喜欢
随机推荐
8年软件测试工程师感悟 —— 写给还在迷茫中的朋友
DOM系列之触屏事件
2.8K 120Hz touch dual-screen blessing Lingyao X dual-screen Pro 2022 makes the office without fear of imagination
pytorch测试的时候为何要加上model.eval()?
03 gp 集群搭建
2.8K 120Hz触控双屏加持 灵耀X 双屏Pro 2022让办公无惧想象
MUI 做手机返回操作栏
经验|如何做好业务测试?
提速!进口婴幼儿配方产品出证仅需1-3天
每日优鲜大败局
90后的焦虑,被菜市场治好了
kubelet node pressure eviction
阿里官方 Redis 开发规范
Spark: Cluster Computing with Working Sets
比对软件-blastN结果详解
Ranking of itineraries (summer vacation daily question 12)
ESP8266-Arduino编程实例-74HC595位移寄存驱动
Rancher 部署 DataKit 最佳实践
Zhaoqi Science and Technology Innovation Event Platform, Entrepreneurship Event Roadshow, Online Live Roadshow
ODrive开发 #1 ODrive固件开发指南[通俗易懂]









