494目标和 ——1049最后一块石头的重量(0-1背包问题)

这道题第一想法是用回溯,但是容易超时。

第二种是转换为0-1背包问题

        //若负数的和为neg,则整数的和为sum-neg

        //按题目要求target = (sum-neg)-neg,转换为neg = (sum-tar)/2

        //dp[i][j]表示前i个元素,凑出和为j的方案数目

        //当i=0,j=0时方案数dp[0][0]=1,j>0时,dp[i][j]=0;

        //其余情况中,j=num时,dp[i][j] = dp[i-1][j]+dp[i-1][j-num]

还要注意一点就是,由于数组 nums中的元素都是非负整数,neg也必须是非负整数,所以上式成立的前提是 sum−target是非负偶数。若不符合该条件可直接返回 0。

题目


回溯法


动态规划
降维


题目

同样是转换为0-1背包问题,背包的容量是sum/2,越接近这个值,最后剩下的石头重量越低,是res = sum - 2*dp[len][mid]

code

你可能感兴趣的:(494目标和 ——1049最后一块石头的重量(0-1背包问题))