部分和-挑战程序设计竞赛

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, [])
posted @ 2021-02-07 21:05  EdenWu  阅读(44)  评论(0编辑  收藏  举报