动态规划

python
class Solution:
def canPartition(self, nums: List[int]) -> bool:
if sum(nums)%2!=0:
return False
n = len(nums)
target = int(sum(nums)/2)
INF = float('-inf')
dp = [INF for _ in range(target+1)]
dp[0] = 1
for i in range(n):
if(int(nums[i])<=target):
for j in range(target-int(nums[i]),-1,-1):
if dp[j] >0:
dp[j+int(nums[i])] = 1
if dp[target]<0:
return False
else:
return True
