เมื่อจำเป็นต้องรับเซตย่อยทั้งหมดที่มีผลรวมเฉพาะ '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' ซึ่งใช้ขนาดของรายการ รายการเป็นพารามิเตอร์
-
มันวนซ้ำในรายการและใช้วิธี 'การรวมกัน' เพื่อรับชุดค่าผสมทั้งหมด
-
หากผลรวมเท่ากับค่าใดค่าหนึ่ง จะถูกแปลงเป็นรายการและแสดงบนคอนโซล
-
นอกวิธีการกำหนดขนาด
-
รายการถูกกำหนดและแสดงบนคอนโซล
-
ค่าเซตย่อยถูกกำหนดไว้
-
วิธีการนี้ถูกเรียกโดยการส่งผ่านพารามิเตอร์ที่จำเป็น
-
เอาต์พุตจะแสดงบนคอนโซล