代码随想录算法训练营第四十二天|1049. 最后一块石头的重量II|494. 目标和|474.一和零

一、1049. 最后一块石头的重量II

思路:首先明确这题是要两堆石头碰撞,那样剩余的石头就更少。然后明确这题是尽可能的往背包装,装不满也没事。明确这两点以后,就可以用之间的思想来做了。一个数就是一个物品,它的值既是它的重量也是它的价值。

二、494. 目标和

思想:首先明确这是01背包的问题,但是这题和以前又不一样,不一样的地方在于dp[j]的含义,以前的dp[j]是容量为j的背包能够最多装多少价值的物品。这里dp[j]是你装满容量为j的背包有多少种方法,然后是确定递归公式,其实我注释的递归公式是错的,当时就是理解错了dp[j]可以由dp[j-nums[i]]得出,因为你每装一个物品背包容量就会变成j-num[i],装满这个背包会有dp[j-nums[i]]种方法,所以dp[j]为所有情况的总和,然后对于初始化这里可能不好理解,就是dp[0]=1,但是不用纠结。

 三、474.一和零

思想:这题其实比最开始做的01背包问题多了一个维度,就是多了一个重量,以前只需要考虑一个重量限制条件,而这里需要考虑两个限制条件,所以自己第一遍做的时候,并没有想到什么思路去同时处理这两个限制条件,然后递归公式没有推出来,看了解析发现处理又让人苦笑不得,整体的思路都是背包能够装多少的问题,关键在于处理两个重量,就是两个限制条件的递归公式,就是通过一个限制重量的递归公式推过来的。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值