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

C++-এ কমপক্ষে X এবং সর্বোচ্চ Y আকারের সাবঅ্যারে-এর সর্বোচ্চ গড়

সমস্যা বিবরণ

একটি অ্যারে arr[] এবং দুটি ইন্টিজার X এবং Y দেওয়া আছে। কাজ হল কমপক্ষে X এবং সর্বোচ্চ Y আকারের একটি সাব-অ্যারে খুঁজে বের করা যাতে সর্বোচ্চ গড় থাকে।

উদাহরণ

যদি ইনপুট অ্যারে হয় {2, 10, 15, 7, 8, 4} এবং x = 3 এবং Y = 3 তবে আমরা সর্বোচ্চ গড় 12.5 পেতে পারি নিচের মতো:

(10 + 15) / 2 = 12.5

অ্যালগরিদম

  • X আকার থেকে Y আকার পর্যন্ত সব সাব-অ্যারে থেকে সর্বোচ্চ গড় বের করুন।
  • টাইম কমপ্লেক্সিটি কমানোর জন্য প্রিফিক্স সাম অ্যারে ব্যবহার করে যেকোনো সাব-অ্যারের যোগফল O(1)-এ পাওয়া যায়।

উদাহরণ

#include <bits/stdc++.h> 
using namespace std; 
double getMaxAverage(int* arr, int n, int x, int y) { 
    int prefix[n]; 
    prefix[0] = arr[0]; 
    for (int i = 1; i < n; ++i) { 
        prefix[i] = prefix[i - 1] + arr[i]; 
    } 
    double maxAverage = 0; 
    for (int i = 0; i < n; ++i) { 
        for (int j = i + x - 1; j < i + y && j < n; ++j) { 
            double sum = prefix[j]; 
            if (i > 0) { 
                sum = sum - prefix[i - 1]; 
                double current = sum / double(j - i + 1); 
                maxAverage = max(maxAverage, current); 
            } 
        } 
    } 
    return maxAverage; 
} 
int main() { 
    int arr[] = {2, 10, 15, 7, 8, 4}; 
    int x = 2; 
    int y = 3; 
    int n = sizeof(arr) / sizeof(arr[0]); 
    cout << "Maximum average = " << getMaxAverage(arr, n, x, y) << endl; 
    return 0; 
}

আউটপুট

Maximum average = 12.5
  1. C++-এ সর্বোচ্চ এক উপাদান সরিয়ে সাবঅ্যারে যোগফল সর্বাধিক করা

  2. C++-এ Мак্সিমাম সাইজ ২ এবং সম সীমাবদ্ধতা দিয়ে মিনিমাম পার্টিশন

  3. C++-এ ডিভাইড অ্যান্ড কঙ্কর ব্যবহার করে मैक्सিমাম সাবঅ্যারে সম বের করা

  4. C++-এ ডিভাইড এন্ড কংকর অ্যালগরিদম দিয়ে সর্বোচ্চ সাবঅ্যারে সম