สมมติว่าเรามีอาร์เรย์ n สมาชิก ต้องการหาผลรวมสูงสุดจากการเลือกสองลำดับย่อย (อาจเหมือนกันได้) โดยลำดับแรกคำนวณ Bitwise AND ทุกตัว ลำดับที่สองคำนวณ Bitwise OR ทุกตัว ผลรวมของทั้งสองต้องมากที่สุด
เช่น A = [4, 6, 7, 2] ผลลัพธ์คือ 14 (AND สูงสุด = 7 จาก [7], OR สูงสุด = 7 จาก [4,6,7,2])
ขั้นตอนการแก้ปัญหา
- AND สูงสุด = ค่าสูงสุดในอาร์เรย์ (เลือกเฉพาะตัวนั้น)
- OR สูงสุด = OR ของทุกตัวในอาร์เรย์
- ผลรวม = max_val + or_all
ตัวอย่างโค้ด Python
def get_max_sum(arr):
and_max = max(arr)
or_max = 0
for x in arr:
or_max |= x
return and_max + or_max
a = [4, 6, 7, 2]
print(get_max_sum(a))
อินพุต
[4, 6, 7, 2]
เอาต์พุต
14