416 分割等和子集
给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等
def canPartition(nums:'List[int]')->bool:total_sum=sum(nums)if total_sum%2!=0:return Falsetarget_sum=total_sum//2dp=[[False]*(target_sum+1) for _ in range(len(nums)+1)]for i in range(len(nums)+1):dp[i][0]=True# dp[i][j]表示从前i个元素中选取元素,相加刚好能组成jfor i in range(1,len(nums)+1):for j in range(1,target_sum+1):if j<nums[i-1]dp[i][j]=dp[i-1][j]else:dp[i][j]=dp[i-1][j] or dp[i-1][j-nums[i-1]]return dp[len(nums)][target_sum]def canParition(nums):total_sum=sum(nums)if total_sum%2!=0:return Falsetarget_sum=total/2dp=[False]*(target_sum+1)dp[0]=Truefor num in nums:for i in range(target_sum,num-1,-1):dp[i]=dp[i] or dp[i-num]return dp[target_num]
+ a=0 or i 当等号后面第一个元素为True,a=第一个否则a=第二个
+ 没搞懂,待解决