【leetcode31】

416. 分割等和子集

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

发表评论