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

ชุดย่อยใน Python


สมมติว่าเรามีชุดตัวเลข เราต้องสร้างชุดย่อยที่เป็นไปได้ทั้งหมดของชุดนั้น นี้เรียกว่าชุดพลังงาน ดังนั้นหากเซตนั้นเหมือน [1,2,3] เซตกำลังจะเป็น [[], [1], [2], [3], [1,2], [1,3], [2 ,3], [1,2,3]]

ให้เราดูขั้นตอน -

  • เราจะแก้ปัญหานี้โดยใช้วิธีการแบบเรียกซ้ำ ดังนั้นหากชื่อเมธอดแบบเรียกซ้ำเรียกว่า Solve() และใช้ชุดของตัวเลข (nums) ชุดชั่วคราว (temp) res และ index
  • ฟังก์ชัน Solve() จะทำงานดังนี้ -
  • ถ้า index =ความยาวของ nums ให้สร้างรายการเหมือนกับ temp แล้วแทรกลงใน res และ return
  • อุณหภูมิ[ดัชนี] :=0
  • แก้ (nums, temp, res, index + 1)
  • อุณหภูมิ[ดัชนี] :=1
  • แก้ (nums, temp, res, index + 1)
  • หน้าที่หลักจะเป็นดังนี้ -
  • res :=รายการว่าง
  • สร้างรายการชั่วคราวที่มีขนาดเท่ากับ nums และเติมค่านี้ด้วย 0
  • call Solve(nums, temp, res, 0)
  • main_res :=รายการว่าง
  • สำหรับรายการทั้งหมดใน temp_res
    • อุณหภูมิ :=รายการว่าง
    • สำหรับ i :=0 ถึงความยาวของรายการ
      • ถ้ารายการ[i] =1 ให้ใส่ nums[i] ลงใน temp
    • ใส่อุณหภูมิลงใน main_res
  • ส่งคืน res หลัก

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

ตัวอย่าง

class Solution(object):def subsets(self, nums):temp_result =[] self.subsets_util(nums,[0 for i in range(len(nums))],temp_result,0) main_result =[] สำหรับ รายการใน temp_result:temp =[] for i in range(len(lists)):if displays[i] ==1:temp.append(nums[i]) main_result.append(temp) return main_result def subsets_util(self, nums,temp,result,index):ถ้า index ==len(nums):result.append([i for i in temp]) #print(temp) return temp[index] =0 self.subsets_util(nums,temp, ผลลัพธ์,index+1) temp[index] =1 self.subsets_util(nums, temp, result,index + 1)ob1 =Solution()print(ob1.subsets([1,2,3,4])) 

อินพุต

[1,2,3,4]

ผลลัพธ์

[[], [4], [3], [3, 4], [2], [2, 4], [2, 3], [2, 3, 4], [1], [ 1, 4], [1, 3], [1, 3, 4], [1, 2], [1, 2, 4], [1, 2, 3], [1, 2, 3, 4] ]