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