Python程序获取所有和为s的子集
当需要获取所有和为特定值'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'方法获取所有组合。
如果和与特定值相同,则将其转换为列表并在控制台显示。
在方法外部,定义一个大小。
定义一个列表并在控制台显示。
定义一个子集值。
通过传递所需参数来调用该方法。
输出显示在控制台上。
广告