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

C++-এ সর্বোচ্চ যোগফল পেতে M এলিমেন্ট বাছাই করা যাতেряд আরোপ K-র চেয়ে বেশি না হয়


এই সমস্যাতে, আমাদের একটি অ্যারে arr[] এবং দুটি পূর্ণসংখ্যা M ও K দেওয়া আছে। আমাদের কাজ হলো দেওয়া অ্যারের উপাদান ব্যবহার করে একটি নতুন অ্যারে তৈরি করা। নতুন অ্যারের সাইজ হবে M এবং K-র চেয়ে বড় আকারের কোনো সাব-অ্যারে-তে সব উপাদান একসামান থাকতে পারবে না। আমাদের তৈরি অ্যারেটির সর্বোচ্চ সম্ভাব্য যোগফল বের করতে হবে।

উদাহরণ:

ইনপুট - arr[] = {1, 2, 4, 5, 7}, M = 5, K = 2

ব্যাখ্যা - শর্ত পূরণকারী তৈরি অ্যারে: {7, 7, 5, 7, 7}। এখানে আকার ২-র চেয়ে বড় কোনো সাব-অ্যারেতে সব উপাদান একসামান নেই।

সমাধানের জন্য, সর্বোচ্চ মানযুক্ত উপাদান ব্যবহার করে অ্যারে তৈরি করতে হবে। কিন্তু সর্বোচ্চ মান K বার سے বেশি ব্যবহার করা যাবে না, তাই K বার পর পর دوم সর্বোচ্চ মান ব্যবহার করতে হবে। প্রতি K টি সর্বোচ্চ মানের পর একটি دوم সর্বোচ্চ মান বসিয়ে M দৈর্ঘ্যের অ্যারে তৈরি করলে তার যোগফলই উত্তর হবে।

উদাহরণ

সমাধানের প্রোগ্রাম:

#include <iostream> 
using namespace std; 

long int arraySum(int arr[], int n, int m, int k) {
    int max1 = arr[0], max2 = arr[0];
    for (int i = 1; i < n; i++) {
        if (arr[i] > max1) {
            max2 = max1;
            max1 = arr[i];
        } else if (arr[i] > max2)
            max2 = arr[i];
    }
    int max2count = m / (k + 1);
    long int sum = max2count * max2 + (m - max2count) * max1;
    return sum;
}

int main() {
    int arr[] = { 1, 3, 6, 7, 4, 5 };
    int n = sizeof(arr) / sizeof(arr[0]);
    int m = 9, k = 2;
    cout << "The maximum sum of array created from the given array such that no subarray of size greater ";
    cout << "than " << k << " will have same elements is ";
    cout << arraySum(arr, n, m, k);
    return 0;
}

আউটপুট

The maximum sum of array created from the given array such that no subarray of size greater than 2 will have same elements is 60

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

  2. C++-এ অ্যারে উপাদান গণনা যা অন্যান্য সব উপাদানের যোগফলকে ভাগ করে

  3. C++-এ সन्नিহিত অ্যারে

  4. সর্বোচ্চ k সংখ্যক এলিমেন্টের চিহ্ন ফ্লিপ করে সর্বোচ্চ সাবঅ্যারে যোগফল C++-এ