/*
* @lc app=leetcode id=1049 lang=cpp
*
* [1049] Last Stone Weight II
*/
// @lc code=start
class Solution {
public:
int lastStoneWeightII(vector<int>& stones) {
bitset<1501> dp = {1};
int sum = 0;
for(int v : stones){
sum += v;
}
for(int v : stones){
for (int i = min(1500, sum); i >= v; i--)
dp[i] = dp[i] + dp[i - v];
}
for (int i = sum / 2; i >= 0; i--)
if (dp[i]) return sum - i - i;
return 0;
}
};
// @lc code=end
No.276 - LeetCode[1049] Last Stone Weight II - 最优二分配01背包
最新推荐文章于 2025-12-01 23:15:22 发布
这篇博客介绍了如何使用C++实现LeetCode题目1049的Last Stone Weight II,通过位运算和动态规划方法求解。算法核心在于维护一个bitset来跟踪所有可能的剩余石头总重量,以此找到最小的剩余重量。
563

被折叠的 条评论
为什么被折叠?



