检查是否有可能从Python中的给定元素集中获得给定总和
假设我们有一个名为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