Khi cần lấy tất cả các tập con có tổng bằng một giá trị cụ thể 's', ta định nghĩa một phương thức lặp qua danh sách, lấy tất cả các tổ hợp của danh sách, và nếu tổng khớp thì in ra console.
Ví dụ
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)
Đầu ra
The list is: [21, 32, 56, 78, 45, 99, 0] The result is: [21, 32] [21, 32, 0]
Giải thích
- Nhập gói
itertools.combinations. - Định nghĩa hàm
sub_set_sumnhận kích thước list, list và tổng mục tiêu. - Lặp qua list và dùng
combinationsđể lấy tất cả tổ hợp. - Nếu tổng bằng giá trị mục tiêu, chuyển thành list và in ra.
- Bên ngoài hàm: định nghĩa kích thước, list, giá trị tập con, gọi hàm.