Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình để kiểm tra xem chúng ta có thể tạo 24 hay không bằng cách đặt các toán tử trong python

Giả sử chúng ta có một danh sách bốn số, mỗi số nằm trong phạm vi từ 1 đến 9, theo một thứ tự cố định. Bây giờ nếu chúng ta đặt các toán tử +, -, * và / (/ biểu thị phép chia số nguyên) giữa các số và nhóm chúng bằng dấu ngoặc, chúng ta phải kiểm tra xem có thể nhận giá trị 24 hay không.

Vì vậy, nếu đầu vào là nums =[5, 3, 6, 8, 7], thì đầu ra sẽ là True, như (5 * 3) - 6 + (8 + 7) =24.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • Xác định một hàm recom (). Điều này sẽ mất khoảng thời gian
  • answer:=một danh sách mới
  • đối với tôi trong phạm vi từ 0 đến kích thước của arr - 1, thực hiện
    • pre:=recom (arr [từ chỉ mục 0 đến i])
    • suf:=recom (arr [từ chỉ mục i + 1 đến cuối])
    • đối với mỗi k trước, thực hiện
      • đối với mỗi j trong suf, thực hiện
        • chèn (k + j) vào cuối câu trả lời
        • chèn (k - j) vào cuối câu trả lời
        • chèn (k * j) vào cuối câu trả lời
        • nếu j không phải là 0, thì
          • chèn (thương số của k / j) vào cuối câu trả lời
  • nếu kích thước của câu trả lời là 0 và kích thước của arr là 1, thì
    • chèn arr [0] vào cuối câu trả lời
  • trả lời câu trả lời
  • Từ phương thức chính, hãy kiểm tra xem 24 có ở trong định kỳ (nums) hay không, nếu có trả về True, nếu không thì trả về false

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

Ví dụ

class Solution:
   def solve(self, nums):
      def recur(arr):
         answer = []
         for i in range(len(arr) - 1):
            pre, suf = recur(arr[: i + 1]), recur(arr[i + 1 :])
            for k in pre:
               for j in suf:
                  answer.append(k + j)
                  answer.append(k - j)
                  answer.append(k * j)
                  if j != 0:
                     answer.append(k // j)
         if len(answer) == 0 and len(arr) == 1:
            answer.append(arr[0])
         return answer
      return 24 in recur(nums)
ob = Solution()
nums = [5, 3, 6, 8, 7]
print(ob.solve(nums))

Đầu vào

[5, 3, 6, 8, 7]

Đầu ra

True