কম্পিউটার

C++ এ সর্বাধিক বৃত্তাকার সাবয়ারের যোগফল


আমাদের একটি অ্যারে দেওয়া হয়েছে এবং কাজটি হল সাব্যারেগুলি তৈরি করা যাতে একটি বৃত্তাকার ফ্যাশনে সাব্যারেগুলির যোগফল সর্বাধিক মান হয়৷

ইনপুট − int arr[] ={1, 2, 8, 4, 3, 0, 7}

আউটপুট − সর্বাধিক বৃত্তাকার সাবয়ারের যোগফল হল − 22

ব্যাখ্যা − আমাদেরকে {1, 2, 8, 4, 3, 0, 7} সমন্বিত একটি অ্যারে দেওয়া হয়েছে এবং সর্বাধিক যোগফল সহ এর সাবয়ারের হবে 7 + 1 + 2+ 8 + 4 হল 22৷

ইনপুট − int arr[] ={ 2, 5, -1, 6, 9, 4, -5 }

আউটপুট − সর্বাধিক বৃত্তাকার সাবয়ারের যোগফল হল − 25

ব্যাখ্যা − আমাদেরকে {2, 5, -1, 6, 9, 4, -5} সম্বলিত একটি অ্যারে দেওয়া হয়েছে এবং সর্বোচ্চ যোগফল সহ এটির সাবয়ারের হবে 4 + 2 + 5 - 1 + 6 + 9 হল 25৷

নিচের প্রোগ্রামে ব্যবহৃত পদ্ধতিটি নিম্নরূপ

  • ধনাত্মক এবং ঋণাত্মক উভয় মান ধারণকারী পূর্ণসংখ্যা উপাদানগুলির একটি অ্যারে ইনপুট করুন৷

  • একটি অ্যারের আকার গণনা করুন৷

  • আরও প্রক্রিয়াকরণের জন্য ফাংশনে একটি অ্যারে এবং আকার পাস করুন।

  • মোট হিসাবে একটি অস্থায়ী পরিবর্তনশীল তৈরি করুন এবং এটি 0

    সেট করুন
  • একটি অ্যারের আকার পর্যন্ত i থেকে 0 পর্যন্ত লুপ শুরু করুন

  • লুপের ভিতরে, মোট + arr[i>

    সহ মোট সেট করুন
  • temp =arr[0], temp_2 =arr[0], temp_3 =arr[0], temp_4 =arr[0]

    সেট করুন
  • একটি অ্যারের আকার পর্যন্ত i থেকে 1 থেকে FOR লুপটি শুরু করুন

  • লুপের ভিতরে সেট temp =max(temp + arr[i], arr[i]), temp_2 =max(temp_2, temp), temp_3 =min(temp_3 + arr[i], arr[i]), temp_4 =min (temp_4, temp_3)

  • IF সাইজ ==1 চেক করুন তারপর arr[0]

    রিটার্ন করুন
  • IF temp_4 ==মোট চেক করুন তারপর temp_2 ফেরত দিন

  • max_sum =max(temp_3, মোট - temp_4)

    সেট করুন
  • সর্বোচ্চ_সমষ্টি ফেরত দিন

  • ফলাফল প্রিন্ট করুন।

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
int maximum(int arr[], int size){
   int total = 0;
   for (int i = 0; i < size; i++){
      total += arr[i];
   }
   int temp = arr[0];
   int temp_2 = arr[0];
   int temp_3 = arr[0];
   int temp_4 = arr[0];
   for (int i = 1; i < size; i++){
      temp = max(temp + arr[i], arr[i]);
      temp_2 = max(temp_2, temp);
      temp_3 = min(temp_3 + arr[i], arr[i]);
      temp_4 = min(temp_4, temp_3);
   }
   if (size == 1){
      return arr[0];
   }
   if (temp_4 == total){
      return temp_2;
   }
   int max_sum = max(temp_3, total - temp_4);
   return max_sum;
}
int main(){
   int arr[] = { 2, 5, -1, 6, 9, 4, -5 };
   int size = sizeof(arr) / sizeof(arr[0]);
   cout<<"Maximum circular subarray sum is: "<<maximum(arr, size) << endl;
   return 0;
}

আউটপুট

যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউটপুট −

উৎপন্ন করবে
Maximum circular subarray sum is: 25

  1. C++-এ সর্বাধিক K অ্যারে উপাদানের চিহ্ন ফ্লিপ করে সর্বাধিক সাব্যারে যোগফল

  2. C++ এ একটি অ্যারেতে সর্বোচ্চ ভারসাম্যের যোগফল

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

  4. C++ এ ডিভাইড অ্যান্ড কনক্যুয়ার ব্যবহার করে সর্বাধিক যোগফল সাব-অ্যারে