494.目标和:本题的方法主要用来解决------装满容量为x的背包,有几种方法。
可以先理解二维数组的思路:感觉b站一个评论写得很清晰,借用一下。
这题最难理解的地方在于如何初始化数组,为什么dp[0]=1;我试图自己理解一下,关于题目,我举几个实例,即什么时候会出现dp[0]。
首先,数组和与target互为相反数,比如数组元素和为2,target为-2,这个时候bagsize为0,显然唯一一种方法为所有元素取符号,即dp[0]=1;
其次,就是数组中只包含0,target也为0, 假如只有一个0,dp[0]也会累加一次得到2,和实际相符。假如有多个0,例如有2个0, 写成二维数组就是1,2,4一列,一维数组也是,每次循环dp[0]都会翻倍,数组中有0个零就会有2^n种方法。
1049.最后一块石头的重量II: 和分割等和子集类似,可以转化为求背包中最大价值问题,背包容量为数组总和的一半。
今天目标和问题着实有点费时间理解了,一和零问题留明天吧。