Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 최대 Bitwise AND 및 Bitwise OR이 있는 하위 시퀀스 찾기


n개 요소의 배열이 있다고 가정하면 배열의 두 하위 시퀀스(다르거나 다를 수 있음)를 선택하여 최대 합을 표시해야 합니다. 첫 번째 하위 시퀀스의 모든 요소에 대한 현명한 AND 연산과 두 번째 하위 시퀀스의 모든 요소에 대한 비트별 OR 연산이 최대입니다.

따라서 입력이 A ={4, 6, 7, 2}와 같으면 7만 선택하여 최대 AND 값을 얻고 모두 선택하여 최대 OR 값(4 | 6 | 7 | 2) =7. 따라서 결과는 7 + 7 =14가 됩니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다.

  • and_max :=최대 arr

  • or_max :=0

  • 범위 0에서 arr 크기까지의 i에 대해 수행

    • 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