int max(int a, int b) {
return (a > b) ? a : b;
}
bool canPartition(int* nums, int numsSize){
int target = 0, sum = 0;
for (int i=0; i<numsSize; i++)
{
sum += nums[i];
}
if (sum % 2) return false;
target = sum/2;
int dp[target + 1];
memset(dp, 0, sizeof(int) * (target+1));
int i, j;
for (i = 0; i < numsSize; i++)
{
for (j = target; j >= nums[i]; j--)
{
dp[j] = max(dp[j], dp[j - nums[i]] + nums[i]);
}
}
return dp[target] == target;
}
代码随想录算法训练营第四十四天|01背包问题,你该了解这些! ● 01背包问题,你该了解这些! 滚动数组 ● 416. 分割等和子集
最新推荐文章于 2024-06-06 21:12:16 发布