Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรม 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' ซึ่งใช้ขนาดของรายการ รายการเป็นพารามิเตอร์

  • มันวนซ้ำในรายการและใช้วิธี 'การรวมกัน' เพื่อรับชุดค่าผสมทั้งหมด

  • หากผลรวมเท่ากับค่าใดค่าหนึ่ง จะถูกแปลงเป็นรายการและแสดงบนคอนโซล

  • นอกวิธีการกำหนดขนาด

  • รายการถูกกำหนดและแสดงบนคอนโซล

  • ค่าเซตย่อยถูกกำหนดไว้

  • วิธีการนี้ถูกเรียกโดยการส่งผ่านพารามิเตอร์ที่จำเป็น

  • เอาต์พุตจะแสดงบนคอนโซล