Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Chương trình Python lấy tất cả các tập con có tổng bằng s

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_sum nhậ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.