day34 | 动规 背包

二维数组

  • 从 A-Z进行遍历,dp 表示 前 x 个字母的最大存储的值
  • dp [B][space] = max(dp[A][space],dp[A][space-Bspace]+valueB)

一维空间

  • 对于 space的遍历是不能从小到大的
  • 如果是从小到大的,则相同的元素可能会被放入两次
  • 在 space 遍历顺序是从大到小的情况下,必须先进行种类的遍历再进行空间的遍历
  • 如果先进行空间的遍历,则所有dp[A][space-Bspace]都是 0。 是无法分解为最小子问题的
  • 这里的最小子问题就是 space-BSpace能够放的最大的值,但是由于我们是从大到小遍历的,这个小问题是没有求解的。

******

可以理解为 half 空间里,是否可以填满。 根据是否选取 nums[i]得到这个式子

dp[i][space] = dp[i - 1][space] | dp[i - 1][space - nums[i]];

全部评论

相关推荐

程序员小白条:你是沟通了900个,不是投了900份简历,你能投900份,意味着对面都要回复你900次,你早就找到实习了,没亮点就是这样的,别局限地区,时间投的也要早,现在都要7月了
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务