AcWing 算法基础课 动态规划

1、背包问题

  (1)01背包

  每件物品仅用一次 

  可以做空间优化

  dp[j]=max(dp[j],dp[j-v[i]]+w[i]);   

  0,1背包状态均是从前一循环的状态转移

  AcWing 算法基础课 动态规划

  (2)完全背包

  每件物品可以用无限次

  dp[j]=max(dp[j],dp[j-v[i]]+w[i]);

  AcWing 算法基础课 动态规划

  完全背包的状态可以从当前循环的状态转移,进行优化

  AcWing 算法基础课 动态规划

 

 

 

 

 

  (3)多重背包

  每件物品有不同的数量限制

  可以对物品的数量限制进行拆分(1~2^k+c),从而转化为01背包问题

  AcWing 算法基础课 动态规划

  也可以用单调队列进行优化(B站,背包9讲)

  (4)分组背包

  组内仅选一件物品  

  与01背包和完全背包相似,

  dp时枚举第i组而不是第i个物品,

  每组中再对组内物品进行枚举。

 

上一篇:2022版面试宝典之Java基础01


下一篇:Nacos中已经有Optional使用案例了,是时候慎重对待这一语法了