假设我们有一个名为nums的数组和另一个值sum。我们必须检查是否有可能通过添加以num表示的元素来求和,我们可能会多次选择一个元素。
因此,如果输入类似于nums = [2,3,5] sum = 28,则输出将为True,因为我们可以使用5 + 5 + 5 + 5 + 5 + 3 + 3 + 2得到26
为了解决这个问题,我们将遵循以下步骤-
最大:= 1000
table:=大小为0的最大广告填充数组
定义一个功能util()。这将需要数字
桌子[0]:= 1
排序列表编号
对于范围从0到nums的i-1,执行
如果表[j]不为零,则
表[j + val]:= 1
进行下一次迭代
val:= nums [i]
如果table [val]不为零,则
对于介于0到MAX-val-1,范围内的j
从主要方法中执行以下操作-
util(nums)
如果table [sum]不为零,则
返回True
返回False
让我们看下面的实现以更好地理解-
MAX = 1000 table = [0] * MAX def util(nums): table[0] = 1 nums.sort() for i in range(len(nums)): val = nums[i] if table[val]: continue for j in range(MAX - val): if table[j]: table[j + val] = 1 def solve(nums, sum): util(nums) if table[sum]: return True return False nums = [2, 3, 5] sum = 28 print (solve(nums, sum))
[2, 3, 5], 28输出结果
True