leetcode:1049. 最后一块石头的重量 II[01背包][动态规划]
学习要点
- 进一步熟悉01背包
- 灵活转换问题
题目链接
1049. 最后一块石头的重量 II - 力扣(LeetCode)
题目描述
解法:01背包
class Solution {
public:int lastStoneWeightII(vector<int>& stones) {int n = stones.size();int sum = accumulate(stones.begin(),stones.end(),0);int avg = sum / 2;vector<vector<int>> dp(n,vector<int>(avg+1));for(int i = 0;i<=avg;i++){if(i >= stones[0]){dp[0][i] = stones[0];}}for(int i =1;i<n;i++){for(int j = 1; j<=avg;j++){if(j < stones[i]){dp[i][j] = dp[i-1][j];}else{dp[i][j] = max(dp[i-1][j],dp[i-1][j-stones[i]] + stones[i]);}}}int a = dp[n-1][avg];int b = sum -a;return abs(a-b);}
};