获取所有子集使其和为s的Python程序
当需要获取所有和为特定值’s’的子集时,可以定义一个方法,通过迭代列表并获取所有列表的组合,如果匹配和,则在控制台上打印。
例子
以下是相同的演示
from itertools import combinations
def sub_set_sum(size, my_array, sub_set_sum):
for i in range(size+1):
for my_sub_set in combinations(my_array, i):
if sum(my_sub_set) == sub_set_sum:
print(list(my_sub_set))
my_size = 6
my_list = [21, 32, 56, 78, 45, 99, 0]
print("The list is :")
print(my_list)
subset_sum = 53
print("The result is :")
sub_set_sum(my_size, my_list, subset_sum)
输出
The list is :
[21, 32, 56, 78, 45, 99, 0]
The result is :
[21, 32]
[21, 32, 0]
说明
-
导入必要的包。
-
定义名为“sub_set_sum”的方法,该方法接受列表的大小、列表等参数。
-
它遍历列表并使用“combinations”方法获取所有组合。
-
如果和等于特定值,则将其转换为列表并在控制台上显示。
-
在方法外部,定义一个大小。
-
定义一个列表并显示在控制台上。
-
定义subset的值。
-
将所需的参数传递给方法进行调用。
-
在控制台上显示结果。