LeetCode.416 分割等和子集
_sum = sum(nums)
if _sum % 2: return False
target = _sum // 2
dp = [0] * 10001
for i in range(len(nums)):
for j in range(target, 0, -1):
if j < nums[i]:
break
dp[j] = max(dp[j], dp[j-nums[i]] + nums[i])
return dp[target] == target