部分和-挑战程序设计竞赛
a = [1, 2, 4 ,7]
k = 13
def dfs(a:list, k:int, cur: int, res:list) ->list:
if k == 0:
print(res)
exit(0)
if k < 0 or cur == len(a): return []
# 不选,当前指针 +1
dfs(a, k, cur + 1, res)
# 选,当前指针 +1,并把指针的指向的值添加到 res 中
res.append(a[cur])
dfs(a, k - a[cur], cur + 1, res)
res.pop()
dfs(a, k, 0, [])