在Python中查找具有最大按位AND和按位OR的子序列

假设我们有一个包含 n 个元素的数组,我们必须通过选择数组的两个子序列(它们可能不同,也可能不同)来显示最大和,以便第一个子序列和第二个子序列的所有元素的按位或运算是最大的。

因此,如果输入类似于 A = {4, 6, 7, 2},那么输出将是 14,因为我们通过仅选择 7 获得最大 AND 值,通过选择所有 (4 | 6 | 7 | 7 | 2) = 7。所以,结果将是 7 + 7 = 14。

在线示例

让我们看看以下实现以获得更好的理解 -

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

猜你喜欢