在 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
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP