我需要构建一个递归函数,它接收一个整数列表(数字)和一个非负整数(目标)。
该函数将查找给定列表的任何可能子集,如果其值加起来并等于目标,则返回True
。
def subset_sum(numbers, target):
'''
numbers - a list of positive integers
target - a non-negative integer
returns True if the list 'numbers' has a sub-list with sum 'target',
False otherwise.
'''
Side Note: [] is a subset of any given list (set)
示例:
subset_sum([1,2,3,4], 8):
True
subset_sum([1,2,3,4], 11):
False
subset_sum([4,4,4], 05):
True
subset_sum([4,4,4], 11):
False
subset_sum([], 0):
True
任何帮助表示赞赏!
答案 0 :(得分:0)
这是关于子集求和问题的变体(子问题),您可以在这里阅读:
https://en.wikipedia.org/wiki/Subset_sum_problem
有一种伪代码算法概述了大约在多项式时间内解决任何整数(正或负)的问题。有趣的是,这是发布在Stackoverflow和python中!