- class Solution:
- def canPartition(self, nums: List[int]) -> bool:
- if sum(nums)%2!=0:
- return False #和不为偶数直接排除
- target=sum(nums)//2 #均分
- dp=[0]*(target+1) #同上
- for i in nums:
- for j in range(target,i-1,-1):
- dp[j]=max(dp[j],dp[j-i]+i) #0.1背包
- #print(dp)
- if dp[target]==target: #关键判断,价值质量相等
- return True
- return False