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

ตรวจสอบว่าเป็นไปได้หรือไม่ที่จะกลับไปเป็น 12 O-clock โดยการเพิ่มหรือลบวินาทีที่กำหนดในPython


สมมติว่าเรามีอาร์เรย์ของค่าวินาทีที่แตกต่างกัน n ค่า เราต้องตรวจสอบว่าเป็นไปได้หรือไม่ที่จะเริ่มต้นจากนาฬิกา 12'O และกลับไปที่ 12 โดยการเพิ่มหรือลบเฉพาะวินาทีที่กำหนดเท่านั้น เราสามารถใช้วินาทีที่กำหนดทั้งหมดได้เพียงครั้งเดียว เราสามารถเพิ่มหรือลบได้

ดังนั้น หากอินพุตเป็นวินาที =[40,90,50] ผลลัพธ์จะเป็น True เนื่องจากบวกได้ 40 แล้วลบ 90 แล้วจึงบวก 50 อีกครั้ง

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • ขนาด :=2^(ความยาวของอาร์เรย์วินาที)
  • สำหรับ c ในช่วง 0 ถึงขนาด - 1 ทำ
    • เพิ่ม :=0
    • สำหรับ j ในช่วง 0 ถึงขนาดวินาที - 1 ทำ
      • ถ้า c AND (2^j) ไม่ใช่ศูนย์ ดังนั้น
        • เพิ่ม :=เพิ่ม + วินาที[j]
      • มิฉะนั้น
        • เพิ่ม :=เพิ่ม - วินาที[j]
    • ถ้าบวกหารด้วย (24 * 60) ลงตัว
      • คืนค่า True
  • คืนค่าเท็จ

ตัวอย่าง

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

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))

อินพุต

[40,90,50]

ผลลัพธ์

True