round1/day20/动规-完全背包总结

1. 关于动规-完全背包

前置背包:

  1. 01背包
    • 每个物品只能用一次
  2. 多重背包
    • 情形:每个物品限用n次,各不相等
    • 01背包的变体,遍历原始数组nums,将所有物品的数量展开为1的新数组newNums,确保每一个物品在nums中有一个唯一的index i(即01背包)
      注:背包思路跳转01背包总结

**
完全背包:

  1. 情形:每个物品重复使用无限次
    • 正序遍历背包 for (int j=target; j>=weight[i]; j++)
  2. 情形1:求组合(每种组合只能用一次)
    • 情形1.1 求所有组合的数量(return int)
      • 遍历顺序:先背包后物品
      • 递推公式:dp[i]+=dp[i-nums[j]]
      • 例题:lc377 组合总和
  3. 情形2:求排列(组合可以重复使用,如[1,2]和[2,1])
    • 情形2.1 求排列的数量(return int)
      • 遍历顺序:先物品后背包
      • 递推公式:dp[i]+=dp[i-nums[j]]
      • 例题:lc322 零钱兑换,lc279 完全平方数
    • 情形2.2 尝试排列并返回这种排列是否可行 (return boolean)
      • 遍历顺序:先物品后背包
      • 递推公式:dp[i-b’s_Length]==true && a’s_slice.equals(b)
      • 例题:lc139 单词拆分
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值