কম্পিউটার

C++ এ k আকারের একটি সাবয়ারের সর্বাধিক (বা সর্বনিম্ন) যোগফল খুঁজুন


এই সমস্যায়, আমাদেরকে একটি অ্যারে arr[] এবং একটি সংখ্যা k দেওয়া হয়েছে। আমাদের কাজ হল k আকারের একটি সাবয়ারের সর্বাধিক (বা সর্বনিম্ন) যোগফল খুঁজে বের করা।

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

ইনপুট: arr[] ={55, 43, 12, 76, 89, 25, 99} , k =2

আউটপুট: 165

ব্যাখ্যা:

সাইজ 2 এর সাবয়ারের যোগফল =76 + 89 =165

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

সমস্যা সমাধানের একটি সহজ পদ্ধতি হল সমস্ত k আকারের সাবয়ারে খুঁজে বের করা এবং তারপর সর্বাধিক মান সহ যোগফল ফেরত দেওয়া৷

আরেকটি পদ্ধতি স্লাইডিং উইন্ডো ব্যবহার করছে আমরা k আকারের সাবয়ারের সমষ্টি খুঁজে পাব। এর জন্য, পরবর্তী k আকারের সাবয়ারে, আমরা শেষ সূচক উপাদানটি বিয়োগ করব এবং পরবর্তী সূচক উপাদান যোগ করব।

এবং তারপর সর্বোচ্চ মান সহ সাব্যারে যোগফল ফেরত দিন।

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

উদাহরণ

#include <iostream>
using namespace std;

int findMaxSumSubarray(int arr[], int n, int k) {
   
   if (n < k) {
      cout << "Invalid";
      return -1;
   }

   int maxSum = 0;
   for (int i=0; i<k; i++)
      maxSum += arr[i];
   int curr_sum = maxSum;
   for (int i=k; i<n; i++) {
      curr_sum += arr[i] - arr[i-k];
      maxSum = max(maxSum, curr_sum);
   }
   return maxSum;
}

int main() {
   
   int arr[] = {55, 43, 12, 76, 89, 25, 99};
   int n = sizeof(arr)/sizeof(arr[0]);
   int k = 2;
   cout<<"The sum of subarray with max sum of size "<<k<<" is "<<findMaxSumSubarray(arr, n, k);
   return 0;
}

আউটপুট

The sum of subarray with max sum of size 2 is 165

  1. C++-এ সর্বোচ্চ যোগফল কঠোরভাবে বর্ধিত সাবাররে খুঁজুন

  2. C++ এ বাইনারি ট্রিতে সর্বোচ্চ উল্লম্ব যোগফল খুঁজুন

  3. সর্বাধিক আকার 2 এর সর্বনিম্ন পার্টিশন এবং C++ এ প্রদত্ত মান দ্বারা সীমিত যোগফল

  4. C++ প্রোগ্রাম বাইনারি অনুসন্ধান পদ্ধতি ব্যবহার করে সর্বাধিক সাবয়ারের যোগফল খুঁজে বের করতে