题目链接:https://leetcode.cn/problems/last-stone-weight-ii/
题目如下:
class Solution {
public:
int lastStoneWeightII(vector<int>& stones) {
//问题实质:将石头分为2堆,使其总重量尽可能接近
//要求的是剩下重量大小, 可以化解为总重量-2*尽可能低的值
//思路同416题
int sum=0;
for(auto e:stones) sum+=e;
int target=sum/2;
vector<int> dp(3004,0);
for(int i=0;i<stones.size();i++){
for(int j=target;j>=stones[i];j--){
dp[j]=max(dp[j],dp[j-stones[i]]+stones[i]);
}
}
return sum-dp[target]*2;
}
};