C++ 中陣列中不考慮相鄰元素的最大設定位數和
在這個問題中,我們給定了一個整數陣列 arr[]。我們的任務是建立一個程式來計算 C++ 中不考慮相鄰元素的陣列中的最大設定位數和。
問題描述 - 在這裡,我們有一個數組 arr[]。我們必須找到每個數字的設定位數。然後,我們將找到陣列中相鄰元素的最大設定位數和。即 a[i] + a[i+2] ... 的最大和。
讓我們舉個例子來理解這個問題,
輸入
arr[] = {1, 4, 6, 7}輸出
4
解釋
帶有元素二進位制形式的陣列
arr[] = {01, 100, 101, 111}
Bit count array = {1, 1, 2, 3}交替位計數,
arr[0] + arr[2] = 1 + 2 = 3 arr[1] + arr[3] = 1 + 3 = 4
最大和 = 4。
解決方案方法
為了解決這個問題,我們將簡單地找到數字中設定位的數量。並找到具有最大設定位計數的交替對。
最大和將適用於從 0 開始或從 1 開始的陣列。因此,我們只需要檢查其中的兩種情況。
程式說明我們解決方案的工作原理,
示例
#include<iostream>
using namespace std;
int countSetBit(int n){
int setBits = 0;
while(n) {
setBits++;
n = n & (n - 1);
}
return setBits;
}
int findMaxBitAltSubArray(int arr[], int n){
int EvenSum = countSetBit(arr[0]);
int OddSum = 0;
for (int i = 1; i < n; i++){
if(i % 2 == 0){
EvenSum += countSetBit(arr[i]);
} else {
OddSum += countSetBit(arr[i]);
}
}
if(EvenSum >= OddSum){
return EvenSum;
}
return OddSum;
}
int main() {
int arr[] = {1, 4, 6, 7};
int n = 4;
cout<<"The maximum set bit sum in the array without considering adjacent elements is "<<findMaxBitAltSubArray(arr, n);
return 0;
}輸出
The maximum set bit sum in the array without considering adjacent elements is 4
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP