আমাদের পূর্ণসংখ্যার একটি অ্যারে দেওয়া হয়। লক্ষ্য হল অভিব্যক্তির মান সর্বাধিক করা −
arr[j]-arr[i] + arr[l]-arr[k]; i
আমরা সমস্ত উপাদান অতিক্রম করে তা করব এবং অভিব্যক্তির মান গণনা করব। যদি এটি এখন পর্যন্ত সর্বাধিক পাওয়া যায় তবে এটি সংরক্ষণ করুন এবং শেষে ফিরে আসুন।
ব্যাখ্যা − i
arr[j]-arr[i]+arr[l]-arr[k]=2-1+4-3=1+1=2
ব্যাখ্যা − i
arr[j]-arr[i]+arr[l]-arr[k]=5-5+5-5=0
পূর্ণসংখ্যা অ্যারে একটি [] সংখ্যা সংরক্ষণ করে।
ফাংশন maximizeSum(int arr[], int n) ইনপুট হিসাবে অ্যারে এবং এর দৈর্ঘ্য n নেয় এবং arr[j]-arr[i]+arr[l]-arr[k] এর সর্বাধিক মান প্রদান করে যাতে i
পরিবর্তনশীল যোগফল arr[j]-arr[i] এবং arr[l]-arr[k] এর যোগফল সংরক্ষণ করতে ব্যবহৃত হয়।
প্রারম্ভিক সর্বোচ্চ যোগফল হিসাবে maxx=arr[0] শুরু করুন।
i=0, j=1,k=2, l=3 থেকে i
প্রতিটি সূচকের জন্য i,j,k,l কম্পিউট করুন arr[j]-arr[i]+arr[l]-arr[k] এবং সমষ্টিতে সংরক্ষণ করুন
যদি বর্তমান যোগফল>=maxx আপডেট maxx।
শেষ পর্যন্ত পছন্দসই ফলাফল হিসাবে maxx ফেরত দিন।ইনপুট
arr[]= { 1,2,3,4 }
আউটপুট
Maximum value for above expression is : 2
ইনপুট
arr[]= { 5,5,5,5,5 }
আউটপুট
Maximum value for above expression is : 0
নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি
উদাহরণ
#include <bits/stdc++.h>
using namespace std;
// function to maximize the sum of selected numbers
int maximizeSum(int arr[], int n) {
int sum=0;
int maxx=arr[0];
for(int i=0;i<n-3;i++)
for(int j=i+1;j<n-2;j++)
for(int k=j+1;k<n-1;k++)
for(int l=k+1;l<n;l++){
sum=arr[j]-arr[i]+arr[l]-arr[k];
if(sum>=maxx)
maxx=sum;
}
return maxx;
}
int main(){
int a[] = {5, 3, 9, 2, 20};
int n = sizeof(a) / sizeof(a[0]);
cout <<"Maximized value is :"<< maximizeSum(a, n);
return 0;
}
আউটপুট
Maximized value is :24