কম্পিউটার

C++ এ একটি প্রদত্ত অ্যারেতে সাবয়ারের মানে খুঁজুন


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

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

সমস্যাটি বোঝার জন্য একটি উদাহরণ নেওয়া যাক,

ইনপুট

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

আউটপুট

3.78

ব্যাখ্যা

All subarrays of size m are {2, 5, 3}, {5, 3, 6}, {3, 6, 1}
Means of means of subarray of size m,

$$(\left(\frac{2+5+3}{3}\right)+\left(\frac{5+3+6}{3}\right)+\left(\frac{3+6 +1}{3}\right))/3=\left(\frac{10}{3}\right)+\left(\frac{14}{3}\right)+\left(\frac{10 }{3}\right)/3=34/3/3=3.78$$

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

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

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

আমাদের সমাধানের কাজ চিত্রিত করার জন্য প্রোগ্রাম,

উদাহরণ

#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 = 0; 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++-এ অ্যারেতে পরিসরের গড়

  2. C++ এ একটি অ্যারেতে একটি স্থানীয় মিনিমা খুঁজুন

  3. C++ এ একটি ম্যাট্রিক্সের গড় ভেক্টর খুঁজুন

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