কম্পিউটার

সর্বাধিক পরবর্তী যোগফল যেমন C++ প্রোগ্রামে কোনো তিনটি পরপর নয়


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

সমস্যা বর্ণনা − এখানে, আমাদের অ্যারে থেকে সৃষ্ট অনুক্রমের যোগফল খুঁজে বের করতে হবে যাতে পরপর তিনটি উপাদান থাকে না।

এর ধারাবাহিক উপাদান একটি অ্যারে হল সেই উপাদান যা সূচকের একই ক্রম অনুসরণ করেছে।

arr[0], arr[1], arr[2], …

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

ইনপুট

arr[] ={5, 9, 12, 15}

আউটপুট

32

ব্যাখ্যা

সমষ্টি =5 + 12 + 15 =32

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

সমস্যাটির একটি সহজ সমাধান হল বর্তমান সূচক পর্যন্ত থিসাম সংরক্ষণ করার জন্য একটি সহায়ক অ্যারে তৈরি করা। এবং তারপর যোগফল খুঁজুন এবং পরপর যোগফল চেক করে সূচক পর্যন্ত যোগফল পরীক্ষা করুন।

প্রথম দুটি যোগফল মানের জন্য, sumVal[0] =arr[0]sumVal[1] =arr[0] + arr[1] 

তারপর বিবেচনা করা তৃতীয় মান সরাসরি বিবেচনা করা যাবে না. এবং যোগফল বিবেচনা করার জন্য, আমরা বর্তমান তিনটির সাথে শর্তগুলি পরীক্ষা করব, যদি arr[i] বিবেচনা করে, যোগফলের মান বৃদ্ধি করে, arr[i−1] বা arr[i−2] বাদ দেয়। অন্যথায় arr[i বিবেচনা করবেন না ], যোগফল একই থাকে।

<প্রে>সমষ্টি[i] =সর্বোচ্চ(সমষ্টি[i−3] + arr[i−1] + arr[i], sum[i−2] + arr[i], sum[i−1])

উদাহরণ

আমাদের সমাধানের বাস্তবায়ন দেখানোর জন্য প্রোগ্রাম,

#include নেমস্পেস ব্যবহার করে std;int findMaxSubSeqSum(int arr[], int n) { int maxSumArr[n]; maxSumArr[0] =arr[0]; maxSumArr[1] =arr[0] + arr[1]; maxSumArr[2] =max(maxSumArr[1], max(arr[1] + arr[2], arr[0] + arr[2])); জন্য (int i =3; i  

আউটপুট

সর্বোচ্চ পরবর্তী যোগফল যেমন কোনো তিনটি পরপর নয় 32

  1. বাইনারি ট্রিতে নোডের সর্বাধিক যোগফল যেমন C++ প্রোগ্রামে ডায়নামিক প্রোগ্রামিং ব্যবহার করে দুটি সংলগ্ন নয়

  2. একটি বাইনারি ট্রিতে সর্বাধিক সাব-ট্রির যোগফল যেমন C++ প্রোগ্রামে সাব-ট্রিও একটি BST

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

  4. সি++ ব্যবহার করে সংখ্যাগুলি প্রিন্ট করার প্রোগ্রাম যাতে পরপর দুটি সংখ্যা সহ-প্রধান নয় এবং প্রতি তিনটি পরপর সংখ্যা সহ-প্রধান হয়