NUMBERS = None
TARGET = 0
def dfs(n, ret):
if n == len(NUMBERS):
return ret == TARGET
return dfs(n+1, ret+NUMBERS[n]) + dfs(n+1, ret-NUMBERS[n])
def solution(numbers, target):
global NUMBERS, TARGET
NUMBERS, TARGET = numbers, target
return dfs(0, 0)
from itertools import product
def solution(numbers, target):
pairs = ((-x, x) for x in numbers)
return sum(sum(nums) == target for nums in product(*pairs))
print(solution([1, 1, 1, 1, 1], 3))