Sự kết hợp của một số trong python

Tôi đã tìm thấy một số ví dụ về mã thực hiện một phần những gì tôi cần [xem bên dưới]. Bạn có thể vui lòng giúp tôi sửa đổi một trong hai mã để làm những gì tôi cần không?

Tôi cần tìm tất cả các tổ hợp trong một danh sách các số và đối với mỗi tổ hợp để trừ [hoặc cộng, nhân hoặc chia] một giá trị VÀ sau đó để tìm kết quả nào tính tổng cho một giá trị cụ thể

Ví dụ

  1. Đây là một danh sách số. 10, 12, 3, 4, 8
  2. Và đây là giá trị tôi muốn trừ từ mỗi kết hợp. 5
  3. Và đây là giá trị mục tiêu cuối cùng [sản phẩm] cần tìm [chỉ những kết hợp cho kết quả này mới được in]. 7

Vì vậy, phép tính sẽ là [Tôi chỉ đưa ra ý tưởng chung vì danh sách thực tế có thể dài hơn]

10 - 5 = 5
10 + 12 - 5 = 17
10 + 12 + 3 - 5 = 20
10 + 12 + 3 + 4 - 5 = 24
10 + 12 + 3 + 4 + 8 - 5 = 32
12 - 5 = 7
12 + 3 - 5 = 10
12 + 3 + 4 - 5 = 14
12 + 3 + 4 + 8 - 5 = 22
3 - 5 = -2
3 + 4 - 5 = 2
3 + 4 + 8 - 5 = 10
4 - 5 = -1
4 + 8 - 5 = 7

Và các kết hợp duy nhất nên "in" là

12 - 5 = 7
4 + 8 - 5 = 7

Đây là hai mã mẫu mà tôi đã tìm thấy và thực hiện một phần những gì tôi cần

def subset_sum[numbers, target, partial=[]]:
    s = sum[partial]

    # check if the partial sum is equals to target
    if s == target:
        print["sum[%s]=%s" % [partial, target]]
    if s >= target:
        return  # if we reach the number why bother to continue

    for i in range[len[numbers]]:
        n = numbers[i]
        remaining = numbers[i + 1:]
        subset_sum[remaining, target, partial + [n]]


if __name__ == "__main__":
    subset_sum[[10, 12, 3, 4, 8], 7]

và cái thứ hai

class Solution[object]:
   def combinationSum[self, candidates, target]:
      result = []
      unique={}
      candidates = list[set[candidates]]
      self.solve[candidates,target,result,unique]
      return result
   def solve[self,candidates,target,result,unique,i = 0,current=[]]:
      if target == 0:
         temp = [i for i in current]
         temp1 = temp
         temp.sort[]
         temp = tuple[temp]
         if temp not in unique:
            unique[temp] = 1
            result.append[temp1]
         return
      if target 

Chủ Đề