สมมติว่าเรามีอาร์เรย์ของ 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