আমাদের পূর্ণসংখ্যার একটি অ্যারে দেওয়া হয়। লক্ষ্য হল অভিব্যক্তির মান সর্বাধিক করা −
arr[j]-arr[i] + arr[l]-arr[k]; i
আমরা সমস্ত উপাদান অতিক্রম করে তা করব এবং অভিব্যক্তির মান গণনা করব। যদি এটি এখন পর্যন্ত সর্বাধিক পাওয়া যায় তবে এটি সংরক্ষণ করুন এবং শেষে ফিরে আসুন।
ইনপুট
arr[]= { 1,2,3,4 }
আউটপুট
Maximum value for above expression is : 2
ব্যাখ্যা − i
arr[j]-arr[i]+arr[l]-arr[k]=2-1+4-3=1+1=2
ইনপুট
arr[]= { 5,5,5,5,5 }
আউটপুট
Maximum value for above expression is : 0
ব্যাখ্যা − 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 ফেরত দিন।
উদাহরণ
#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