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

2023.8.13

leetcode 1049. 最后一块石头的重量 II_第1张图片

         与分割等和子集类似,可以转化为0-1背包问题。 本题也是需要将数组元素分成两堆,区别在于本题需要使这两堆的差值最小,而之前那题是需要两堆差值为0。

        使用之前的一维dp数组的思路,代码如下:

class Solution {
public:
    int lastStoneWeightII(vector& stones) {
        int sum = 0;
        for(int i=0; i dp(target + 1);
        for(int i=0; i=stones[i]; j--)
            {
                dp[j] = max(dp[j],dp[j-stones[i]]+stones[i]);
            }
        }
        return sum-dp[target]-dp[target];
    }
};

你可能感兴趣的:(leetcode专栏,leetcode,算法,c++,数据结构)