কম্পিউটার

C++ এ সর্বাধিক একটি উপাদান মুছে ফেলার পরে সর্বাধিক সাবয়ারের যোগফল সর্বাধিক করুন


সমস্যা বিবৃতি

N পূর্ণসংখ্যার একটি অ্যারে arr[] দেওয়া হয়েছে। কাজটি হল প্রথমে সর্বাধিক সাব-অ্যারে যোগফল খুঁজে বের করা এবং তারপর সাব-অ্যারে থেকে সর্বাধিক একটি উপাদান সরিয়ে ফেলা। সর্বাধিক একটি একক উপাদান সরান যাতে অপসারণের পরে সর্বাধিক যোগফল সর্বাধিক হয়৷

যদি দেওয়া ইনপুট অ্যারে হয় {1, 2, 3, -2, 3} তাহলে সর্বাধিক সাব-অ্যারের যোগফল হল {2, 3, -2, 3}। তারপর আমরা -2 অপসারণ করতে পারি। অপসারণের পরে অবশিষ্ট অ্যারে হয়ে যায়−

{1, 2, 3, 3} যোগফল 9 সহ যা সর্বাধিক।

অ্যালগরিদম

<পূর্ব>1. সর্বোচ্চ সাবারে যোগফল 2 খুঁজে পেতে Kadane এর অ্যালগরিদম ব্যবহার করুন। একবার যোগফল খুঁজে পাওয়া গেলে, কিছু ছোট পরিবর্তনের সাথে আবার সর্বোচ্চ যোগফল খুঁজে পেতে Kadane-এর অ্যালগরিদম পুনরায় প্রয়োগ করুন)

উদাহরণ

#include নেমস্পেস ব্যবহার করে std;int getMaxSubarraySum(int *arr, int n){ int max =INT_MIN; int currentMax =0; জন্য (int i =0; i 
 

            
  1. C++ এ প্রদত্ত অ্যারে k বার পুনরাবৃত্তি করে তৈরি অ্যারেতে সর্বাধিক সাবয়ারের যোগফল

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

  3. C++ এ সর্বাধিক দুটি উপাদান উল্টানোর পরে সর্বাধিক সাবারে যোগফল

  4. C++ এ K নেগেশানের পরে অ্যারের যোগফল সর্বাধিক করুন