子集和问题的 Python 程序

pythonserver side programmingprogramming

在本文中,我们将了解下面给出的问题陈述的解决方案。

问题陈述 − 我们给定一个数组中的一组非负整数和一个值和,我们需要确定给定集合中是否存在一个子集,其和等于给定和。

现在让我们观察下面实现中的解决方案 −

# 简单方法

示例

def SubsetSum(set, n, sum) :
   # 基本情况
   if (sum == 0) :
      return True
   if (n == 0 且 sum != 0) :
      返回 False
   # 如果最后一个元素 > sum,则忽略
   if (set[n - 1] > sum) :
      return SubsetSum(set, n - 1, sum);
   # 否则,我们检查总和
   # (1) 包括最后一个元素
   # (2) 排除最后一个元素
   return SubsetSum(set, n-1, sum) 或 SubsetSum(set, n-1, sumset[n-1])
# main
set = [2, 14, 6, 22, 4, 8]
sum = 10
n = len(set)
if (SubsetSum(set, n, sum) == True) :
   print("找到具有给定总和的子集")
else :
   print("没有给定总和的子集")

输出

找到给定总和的子集

# 动态方法

示例

# 一个人可以执行的最大活动数
def Activities(s, f ):
   n = len(f)
   print ("选定的活动是:")
   # 始终选择第一个活动
   i = 0
   print (i,end=" ")
   # 对于其余活动
   for j in range(n):
      # 如果开始时间大于或等于前一个活动的时间
      if s[j] >= f[i]:
         print (j,end=" ")
         i = j
# main
s = [1, 2, 0, 3, 2, 4]
f = [2, 5, 4, 6, 8, 8]
Activities(s, f)

输出

找到具有给定总和的子集

结论

在本文中,我们了解了如何为子集总和问题编写 Python 程序


相关文章