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

Kiểm tra xem có thể quay lại 12 O-clock chỉ bằng cách cộng hoặc trừ số giây đã cho trong Python hay không

Giả sử chúng ta có một mảng gồm n giá trị thứ hai khác nhau. Chúng tôi phải kiểm tra xem liệu có thể bắt đầu từ đồng hồ 12'O và quay trở lại 12 bằng cách chỉ cộng hoặc trừ số giây đã cho hay không. Chúng tôi có thể sử dụng tất cả các giây đã cho chính xác một lần, chúng tôi có thể cộng hoặc trừ số giây.

Vì vậy, nếu đầu vào giống như seconds =[40,90,50], thì đầu ra sẽ là True vì nó có thể cộng 40 rồi trừ đi 90 rồi lại cộng 50.

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

  • size:=2 ^ (độ dài của mảng giây)
  • đối với c trong phạm vi từ 0 đến kích thước - 1, thực hiện
    • thêm:=0
    • đối với j trong phạm vi 0 đến kích thước giây - 1, thực hiện
      • nếu c AND (2 ^ j) khác 0, thì
        • thêm:=thêm + giây [j]
      • nếu không,
        • thêm:=thêm - giây [j]
    • nếu phép cộng chia hết cho (24 * 60) thì
      • trả về True
  • trả về Sai

Ví dụ

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

def solve(seconds):
   size = 2**len(seconds)
   for c in range(size):
      add = 0
      for j in range(len(seconds)) :
         if c & (1 << j):
            add += seconds[j]
         else:
            add -= seconds[j]
      if add % (24 * 60) == 0:
         return True
   return False
seconds = [40,90,50]
print(solve(seconds))

Đầu vào

[40,90,50]

Đầu ra

True