কম্পিউটার টিউটোরিয়াল

C++-এ সন্নিহিত উপাদান বাদে অ্যারেতে সর্বোচ্চ সেট বিট যোগফল (Maximum set bit sum in array without considering adjacent elements)

এই সমস্যায় একটি পূর্ণসংখ্যার অ্যারে arr[] দেওয়া আছে। আমাদের C++-এ সন্নিহিত উপাদান বাদে অ্যারেতে সর্বোচ্চ সেট বিট যোগফল বের করার প্রোগ্রাম লিখতে হবে।

সমস্যার বিবরণ - এখানে একটি অ্যারে arr[] দেওয়া আছে। প্রতিটি সংখ্যার সেট বিটের সংখ্যা বের করতে হবে। তারপর সন্নিহিত উপাদান বাদে (a[i] + a[i+2] ...) সর্বোচ্চ সেট বিট যোগফল বের করতে হবে।

উদাহরণ:

ইনপুট

arr[] = {1, 4, 6, 7}

আউটপুট

4

ব্যাখ্যা

বাইনারি রূপে অ্যারে: {01, 100, 101, 111}। সেট বিট কাউন্ট: {1, 1, 2, 3}

বিকল্প সেট বিট যোগফল: arr[0]+arr[2]=1+2=3, arr[1]+arr[3]=1+3=4। সর্বোচ্চ যোগফল = ৪।

সমাধানের পদ্ধতি

প্রতিটি সংখ্যার সেট বিট গণনা করুন। তারপর ০ বা ১ থেকে শুরু হওয়া দুটি বিকল্প সিরিজের যোগফল বের করুন এবং সর্বোচ্চটি নিন।

উদাহরণ

#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 "<

আউটপুট

The maximum set bit sum in the array without considering adjacent elements is 4
  1. C++-এ সার্কুলার অ্যারেতে আঁচবিক উপাদান ছাড়া সর্বোচ্চ যোগফল বের করার পদ্ধতি

  2. C++-এ অ্যারেতে সর্বোচ্চ ইকুইলিব্রিয়াম যোগফল

  3. পুনরাবৃত্ত বিয়োগ দিয়ে সব উপাদান একই করে অ্যারেতে সর্বোচ্চ যোগফল বের করা C++-তে

  4. C++-এ সম অ্যারে পাজল (Sum Array Puzzle) সমাধান