标签:solution and nal count bsp original elf put http
You are given a list of non-negative integers, a1, a2, ..., an, and a target, S. Now you have 2 symbols +
and -
. For each integer, you should choose one from +
and -
as its new symbol.
Find out how many ways to assign symbols to make sum of integers equal to target S.
Example 1:
Input: nums is [1, 1, 1, 1, 1], S is 3. Output: 5 Explanation: -1+1+1+1+1 = 3 +1-1+1+1+1 = 3 +1+1-1+1+1 = 3 +1+1+1-1+1 = 3 +1+1+1+1-1 = 3 There are 5 ways to assign symbols to make the sum of nums be target 3.
1 count = 0 2 def findTargetSumWays(self, nums, S): 3 def findTargetHelper(nums, index, S): 4 if index == len(nums): 5 if S == 0: 6 self.count = self.count + 1 7 return 8 9 10 findTargetHelper(nums, index+1, S - nums[index]) #+1 11 findTargetHelper(nums, index+1, S + nums[index]) #-1 12 13 findTargetHelper(nums, 0, S) 14 15 return self.count
P
of nums
such that sum(P) = (target + sum(nums)) / 2
1 def subsetSum(nums, target): 2 dp = [0]*(target+1) 3 dp[0] = 1 4 for num in nums: 5 for j in range(target, num-1, -1): 6 dp[j] += dp[j-num] 7 #print ("dp: ", target, j, dp[j]) 8 return dp[target] 9 10 sumN = sum(nums) 11 12 if sumN < S or (S+sumN) %2 != 0: 13 return 0 14 return subsetSum(nums, (S+sumN)>>1)
标签:solution and nal count bsp original elf put http
原文地址:http://www.cnblogs.com/anxin6699/p/7078424.html