子集和问题的 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 程序