এই সমস্যাতে, আমাদের একটি অ্যারে arr[] দেওয়া আছে যাতে n সংখ্যক পূর্ণসংখ্যা মান রয়েছে (নেগেটিভ মানও থাকতে পারে)। আমাদের কাজ হল नेগেটিভ মান সহ অ্যারেতে জোড়া গুণফলের সর্বোচ্চ যোগফল খুঁজে বের করার প্রোগ্রাম তৈরি করা।
অ্যারেতে উপাদানগুলো দিয়ে জোড়া তৈরি করতে হবে যেন জোড়া উপাদানগুলোর গুণফলের যোগফল সর্বোচ্চ হয়।
arr[] = {-5, 2, 3, 7, -1, 1, -3, 12}
104
বিবেচনা করার জোড়াগুলো: (-5, -3), (2, 3), (-1, 1), (7, 12) গুণফলের যোগফল = (-5 * -3) + (2 * 3) + (-1 * 1) + (7 * 12) = 15 + 6 - 1 + 84 = 104
সমস্যা সমাধানের জন্য, আমরা এমনভাবে জোড়া তৈরি করব যেন তাদের গুণফলের যোগফল সর্বোচ্চ হয়। যোগফল সর্বোচ্চ করার জন্য, একই চিহ্নের মানগুলোকে একসাথে জোড়া দিতে হবে। এটিকে সহজ बनाने জন্য অ্যারেটি সর্ট করে নেগেটিভ এবং পজিটিভ মানগুলো আলাদা করে জোড়া দিতে হবে। তারপর যদি একটি পজিটিভ বা নেগেটিভ বা উভয় মান জোড়ায় থাকে তবে সেগুলো যোগ করব এবং যদি এক নেগেটিভ এবং এক পজিটিভ থাকে তবে তাদের গুণফল যোগ করব।
আরম্ভিকরণ:
maxSum = 0
ধাপ ১: অ্যারে arr[] সর্ট করুন।
ধাপ ২: অ্যারেতে সকল নেগেটিভ মানের জন্য লুপ চালান। জোড়া বানান এবং তাদের গুণফল maxSum-এ যোগ করুন।
ধাপ ৩: অ্যারেতে সকল পজিটিভ মানের জন্য লুপ চালান। জোড়া বানান এবং তাদের গুণফল maxSum-এ যোগ করুন।
ধাপ ৪: অবশিষ্ট মানগুলো চেক করুন।
- ধাপ ৪.১: যদি একটি পজিটিভ মান অবশিষ্ট থাকে, maxSum-এ যোগ করুন।
- ধাপ ৪.২: যদি একটি নেগেটিভ মান অবশিষ্ট থাকে, maxSum-এ যোগ করুন।
- ধাপ ৪.৩: যদি একটি পজিটিভ এবং একটি নেগেটিভ মান অবশিষ্ট থাকে, তাদের গুণফল maxSum-এ যোগ করুন।
ধাপ ৫: maxSum ফেরত দিন।
#includeusing namespace std; long calcSumPairProd(int arr[], int n) { long maxSum = 0; sort(arr, arr + n); int i = 0, j = (n - 1); while (i < n && arr[i] < 0) { if (i != n - 1 && arr[i + 1] <= 0) { maxSum = (maxSum + (arr[i] * arr[i + 1])); i += 2; } else break; } while (j >= 0 && arr[j] > 0) { if (j != 0 && arr[j - 1] > 0) { maxSum = (maxSum + (arr[j] * arr[j - 1])); j -= 2; } else break; } if (j > i) maxSum = (maxSum + (arr[i] * arr[j])); else if (i == j) maxSum = (maxSum + arr[i]); return maxSum; } int main() { int arr[] = { -5, 2, 3, 7, -1, 1, -3, 12 }; int n = sizeof(arr) / sizeof(arr[0]); cout << "The maximum sum of pairwise product in an array is " << calcSumPairProd(arr, n); return 0; }
The maximum sum of pairwise product in an array is 104