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];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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容