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

C++-এ দেওয়া অ্যারেতে সাবঅ্যারে মিনের গড় খুঁজুন

এই সমস্যায়, আমাদের একটি অ্যারে arr[] দেওয়া আছে যার আকার n এবং একটি পূর্ণসংখ্যা m। আমাদের কাজ হলো দেওয়া অ্যারেতে সাবঅ্যারে মিনের গড় খুঁজে বের করা।

কোড বিবরণ

এখানে, আমাদের অ্যারের গড় বের করতে হবে m আকারের সাবঅ্যারে গুলোর মিনের গড় হিসাব করে।

উদাহরণ

ইনপুট

arr[] = {2, 5, 3, 6, 1}, m = 3

আউটপুট

3.78

ব্যাখ্যা

m আকারের সব সাবঅ্যারে: {2, 5, 3}, {5, 3, 6}, {3, 6, 1}
সাবঅ্যারে মিনের গড়:
((2+5+3)/3 + (5+3+6)/3 + (3+6+1)/3) / 3 = (10/3 + 14/3 + 10/3) / 3 = 34/3/3 = 3.78

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

একটি সহজ সমাধান হলো m আকারের সব সাবঅ্যারে বের করে তাদের মিন নির্ণয় করা। তারপর সব মিন যোগ করে সাবঅ্যারে সংখ্যা দিয়ে ভাগ করে ফলাফল ফেরত দেয়া।

একটি আরও দক্ষ পদ্ধতি হলো স্লাইডিং উইন্ডো অ্যালগরিদম ব্যবহার করা। আমরা ইনডেক্স ০ থেকে m আকারের উইন্ডো নিয়ে শুরু করব। প্রতিটি উইন্ডোর জন্য মিন বের করব এবং যোগ করব। শেষে যোগফলকে উইন্ডো সংখ্যা দিয়ে ভাগ করে ফলাফল ফেরত দিব।

C++ প্রোগ্রাম উদাহরণ

#include <iostream>
using namespace std;

float calcMeanOfSubarrayMeans(int arr[], int n, int m) {
    float meanSum = 0, windowSum = 0;
    for (int i = 0; i < m; i++)
        windowSum += arr[i];
    meanSum += (windowSum / m);
    for (int i = m; i < n; i++) {
        windowSum = windowSum - arr[i - m] + arr[i];
        meanSum += (windowSum / m);
    }
    int windowCount = n - m + 1;
    return (meanSum / windowCount);
}

int main() {
    int arr[] = { 4, 1, 7, 9, 2, 5, 3};
    int n = sizeof(arr) / sizeof(arr[0]);
    int m = 3;
    cout << "The mean of subarray means is " << calcMeanOfSubarrayMeans(arr, n, m);
    return 0;
}

আউটপুট

The mean of subarray means is 8.06667
  1. C++-এ অ্যারেতে রেঞ্জের গড় (Mean of Range in Array)

  2. অ্যারেতে লোকাল মিনিমা খুঁজে বের করা (C++)

  3. C++-এ ম্যাট্রিক্সের মিন ভেক্টর (Mean Vector) নির্ণয়

  4. C++-এ অ্যারে উপাদানগুলির ফ্যাক্টোরিয়ালের GCD বের করা