416分割等和子集
class Solution:
def canPartition(self, nums: List[int]) -> bool:
dp = [0] * 10001
sum_nums = sum(nums)
if sum_nums % 2 == 1:
return False
target = sum_nums // 2
for i in range(len(nums)):
for j in range(target, nums[i] - 1, -1):
dp[j] = max(dp[j], dp[j - nums[i]] + nums[i])
if dp[target] == target:
return True
else:
return False