এই সমস্যায়, আমাদের একটি অ্যারে দেওয়া হয়েছে। আমাদের কাজ হল এমন একটি প্রোগ্রাম তৈরি করা যা অ্যারেতে সর্বাধিক ট্রিপলেট যোগফল খুঁজে পাবে অর্থাৎ তিনটি উপাদানের সেট খুঁজে বের করা যার যোগফল সর্বাধিক।
সমস্যাটি বোঝার জন্য একটি উদাহরণ দেওয়া যাক,
ইনপুট − অ্যারে ={4, 6, 1, 2}
আউটপুট − 12
ব্যাখ্যা −
all triplets are : (4, 6, 1) = 4+6+1 = 11 (4, 6, 2) = 4+6+1 = 12 (4, 1, 2) = 4+6+1 = 7 (6, 1, 2) = 4+6+1 = 9 The maximum triplet sum is 12
সমস্যা সমাধানের জন্য একটি সহজ পদ্ধতি হল আমরা উদাহরণে যা চিত্রিত করেছি, যা সমস্ত ট্রিপলেট জোড়ার জন্য যোগফলের মান নিচ্ছে এবং তারপরে তাদের সর্বাধিক খুঁজে বের করছে। কিন্তু এই পদ্ধতিটি কার্যকর নয় কারণ সমস্ত দৈর্ঘ্যের সাথে ট্রিপলেটের সংখ্যা বড় হয়ে যাবে।
এই পদ্ধতিতে, আমরা তিনটি লুপ চালাব যা সমস্ত সম্ভাব্য যোগফল ট্রিপলেট খুঁজে পাবে এবং যদি এই ট্রিপলেটের যোগফল ম্যাক্সসামের থেকে বড় হয় তবে আমরা এই ট্রিপলেট যোগটিকে ম্যাক্সসাম হিসাবে শুরু করব।
উদাহরণ
আমাদের সমাধান চিত্রিত করার জন্য প্রোগ্রাম,
#include <iostream> using namespace std; int maxSum(int arr[], int n){ int maxSum = 0; int i, j, k; for (i = 0; i < n; i++) for (j = i + 1; j < n; j++) for (k = j + 1; k < n; k++) if (maxSum < arr[i] + arr[j] + arr[k]) maxSum = arr[i] + arr[j] + arr[k]; return maxSum; } int main(){ int arr[] = { 3, 5, 7 ,1, 9, 0 }; int n = sizeof(arr) / sizeof(arr[0]); cout<<"The maximum triplet sum of the array is "<<maxSum(arr, n); return 0; }
আউটপুট
The maximum triplet sum of the array is 21
একটি কার্যকর পদ্ধতি হবে অ্যারের সাজানো এবং তারপর অ্যারের শেষ তিনটি উপাদানের যোগফল খুঁজে বের করা যা ত্রিপলের সর্বোচ্চ যোগফল হবে।
উদাহরণ
সমাধান চিত্রিত করার জন্য প্রোগ্রাম,
#include <bits/stdc++.h> using namespace std; int maxSum(int arr[], int n) { sort(arr, arr + n); return arr[n - 1] + arr[n - 2] + arr[n - 3]; } int main() { int arr[] = { 3, 5, 9, 1, 2, 8, 7 }; int n = sizeof(arr) / sizeof(arr[0]); cout<<"The maximum triplet sum of the array is "<<maxSum(arr, n); return 0; }
আউটপুট
The maximum triplet sum of the array is 24