思路:
蛮有难度的一题
问题转化为在nums中找到所有和为某一值的子集合p
此时可以用动态规划解决dp[j] = dp[j - num] + dp[j]
(这里我不是很明白)
class Solution(object):
def findTargetSumWays(self, nums, S):
count = 0
if sum(nums) < S or (S + sum(nums)) % 2 != 0:
return 0
tar = (S + sum(nums)) // 2
dp = [0] * (tar + 1)
dp[0] = 1
for num in nums:
for i in range(tar, num-1,-1):
dp[i] += dp[i-num]
return dp[tar]