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

ค้นหาลำดับรองด้วย Bitwise AND และ Bitwise OR สูงสุดใน Python


สมมติว่าเรามีอาร์เรย์ของ n องค์ประกอบ เราต้องแสดงผลรวมสูงสุดโดยเลือกลำดับย่อยสองลำดับของอาร์เรย์ (อาจหรือไม่ต่างกันก็ได้) เพื่อให้ผลรวมของบิต- wise AND การทำงานขององค์ประกอบทั้งหมดของลำดับแรกและ bit-wise OR ขององค์ประกอบทั้งหมดของลำดับที่สองสูงสุด

ดังนั้น หากอินพุตเป็น A ={4, 6, 7, 2} ผลลัพธ์จะเป็น 14 เนื่องจากเราได้รับค่าสูงสุด AND โดยเลือก 7 เท่านั้น และค่าสูงสุด OR โดยเลือกทั้งหมด (4 | 6 | 7 | 2) =7. ดังนั้น ผลลัพธ์จะเป็น 7 + 7 =14.

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

  • and_max :=สูงสุดของ arr

  • or_max :=0

  • สำหรับฉันในช่วง 0 ถึงขนาดของ arr ทำ

    • or_max :=or_max OR arr[i]

  • กลับ and_max + or_max

ตัวอย่าง

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

def get_max_sum(arr):
   and_max = max(arr)
   or_max = 0
   for i in range(len(arr)):
      or_max|= arr[i]
   return and_max + or_max
a = [4,6,7,2]
print(get_max_sum(a))

อินพุต

[4,6,7,2]

เอาท์พุต

14