在 Python 中查找具有最大位运算 AND 和位运算 OR 的子序列
假设我们有一个由 n 个元素组成的数组,我们需要通过选择数组的两个子序列(它们可以相同也可以不同)来显示最大和,使得第一个子序列的所有元素的按位 AND 运算和与第二个子序列的所有元素的按位 OR 运算和最大。
因此,如果输入类似于 A = {4, 6, 7, 2},那么输出将为 14,因为我们通过仅选择 7 就可以获得最大 AND 值,并通过选择全部(4 | 6 | 7 | 2)= 7 来获得最大 OR 值。因此,结果将为 7 + 7 = 14。
为了解决这个问题,我们将遵循以下步骤 −
and_max := 数组的最大值
or_max := 0
对于 i 从 0 到数组大小循环执行
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
广告