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

C++-এ আডজেসেন্ট উপাদান ছাড়া সর্বোচ্চ যোগফল (O(1) স্পেস)

একটি অ্যারে দেওয়া আছে। কোনো দুটি উপাদান আডজেসেন্ট না হলে সাবসিকোয়েন্সের সর্বোচ্চ যোগফল বের করতে হবে। O(1) এক্সট্রা স্পেস দিয়ে সমাধান।

উদাহরণ

arr[] = {5, 1, 3, 7, 9, 2, 5}

আউটপুট: 22

অ্যালগরিদম

  • দুটি ভ্যারিয়েবল: incl (বর্তমান উপাদান অন্তর্ভুক্ত করে যোগফল), excl (বাতিত করে যোগফল)।
  • প্রতিটি উপাদানের জন্য: new_excl = max(incl, excl); incl = excl + arr[i]; excl = new_excl;
  • শেষে max(incl, excl) রিটার্ন করুন।

C++ প্রোগ্রাম

#include <iostream>
using namespace std;

int findMaxSumWOAdjecent(int arr[], int N) {
    int incl = arr[0];
    int excl = 0;
    for (int i = 1; i < N; i++) {
        int new_excl = max(incl, excl);
        incl = excl + arr[i];
        excl = new_excl;
    }
    return max(incl, excl);
}

int main() {
    int arr[] = {5, 1, 3, 7, 9, 2, 5};
    int N = sizeof(arr)/sizeof(arr[0]);
    cout << "Max sum without adjacent: " << findMaxSumWOAdjecent(arr, N);
    return 0;
}

আউটপুট: Max sum without adjacent: 22

  1. বাইনারি ট্রিতে পরস্পর সংলগ্ন নয় এমন নোডগুলোর সর্বোচ্চ যোগফল (ডাইনামিক প্রোগ্রামিং সহ C++ প্রোগ্রাম)

  2. C++-এ সার্কুলার অ্যারেতে আঁচবিক উপাদান ছাড়া সর্বোচ্চ যোগফল বের করার পদ্ধতি

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

  4. C++-এ দুটি অ্যারেতে ম্যাক্সিমাম সাম পাথ (Maximum Sum Path in Two Arrays)