码迷,mamicode.com
首页 > 其他好文 > 详细

Zero_One_Pack

时间:2019-08-18 16:02:05      阅读:85      评论:0      收藏:0      [点我收藏+]

标签:定义   one   max   表示   pack   优化   --   for   mat   

  • 状态定义:\(f_{i,j}\)表示将前\(i\)件物品放入容量为\(j\)的背包中所能获得的最大价值
  • 推理:第\(i\)件物品放或不放
  • 方程:\(f_{i,j}=max(f_{i-1,j},f_{i-1,j-C_i}+W_i)\)

    $\Updownarrow $

    *空间优化:
  • \(f_j\)表示剩余\(j\)的被包能放下的最大价值
  • 方程:\(f_j=max(f_j,f_{j-C_i}+W_i)\)(必须逆序枚举\(j\),否则无法满足无后效性)
    代码
   for(register int i = 1 ; i <= n ; i++){
       for(register int j = V ; j >= C[i] ; j--){
           f[j] = max(f[j] , f[j - C[i]] + W[i]);
       }
   } 

Zero_One_Pack

标签:定义   one   max   表示   pack   优化   --   for   mat   

原文地址:https://www.cnblogs.com/defense/p/11372403.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!