最后一块石头的重量II(01背包)
class Solution {
public:
int lastStoneWeightII(vector<int>& stones) {
if(stones.size() == 0) return 0;
int n = stones.size();
int sum = 0;
for(auto x:stones) sum+=x;
int target = sum/2;
vector<vector<int>> dp(n+1,vector<int>(target+1,0));
for(int i = 1;i<=n;i++){
for(int j = 0;j<=target;j++){
if(j < stones[i-1]) dp[i][j] = dp[i-1][j];
else{
dp[i][j]=max(dp[i-1][j],dp[i-1][j-stones[i-1]]+stones[i-1]);
}
}
}
return sum - dp[n][target] * 2;
}
};

浙公网安备 33010602011771号
ヾ(≧O≦)〃嗷~