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

Tìm chuỗi con với tối đa Bitwise AND và Bitwise OR bằng Python


Giả sử chúng ta có một mảng n phần tử, chúng ta phải hiển thị tổng lớn nhất bằng cách chọn hai dãy con của mảng (chúng có thể khác nhau hoặc không) sao cho tổng bit- phép toán AND khôn ngoan của tất cả các phần tử của dãy con đầu tiên và phép toán OR khôn ngoan theo bit của tất cả các phần tử của dãy con thứ hai là tối đa.

Vì vậy, nếu đầu vào là A ={4, 6, 7, 2}, thì đầu ra sẽ là 14 vì chúng ta đang nhận giá trị AND lớn nhất bằng cách chỉ chọn 7 và giá trị OR lớn nhất bằng cách chọn tất cả (4 | 6 | 7 | 2) =7. Vì vậy, kết quả sẽ là 7 + 7 =14.

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

  • and_max:=tối đa của arr

  • hoặc_max:=0

  • đối với tôi trong phạm vi từ 0 đến kích thước của arr, thực hiện

    • or_max:=or_max HOẶC arr [i]

  • trả về và_max + hoặc_max

Ví dụ

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

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

Đầu vào

[4,6,7,2]

Đầu ra

14