কম্পিউটার টিউটোরিয়াল

অ্যারে অফ ইন্টিজার থেকে সর্বোচ্চ গুণফলের জোড়া খুঁজে বের করা C++-এ

মনে করুন একটি অ্যারে A আছে, যেখানে n সংখ্যক ভিন্ন উপাদান রয়েছে। আমাদের কাজ হল অ্যারে A থেকে একটি জোড়া (x, y) খুঁজে বের করা, যাতে x এবং y-এর গুণফল সর্বোচ্চ হয়। অ্যারেতে ধনাত্মক বা ঋণাত্মক উপাদান থাকতে পারে। উদাহরণস্বরূপ, যদি অ্যারেটি হয়: A = [-1, -4, -3, 0, 2, -5], তবে জোড়াটি হবে (-4, -5) কারণ এদের গুণফল ২০ যা সর্বোচ্চ।

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

এই সমস্যাটি সমাধান করতে হলে চারটি সংখ্যা ট্র্যাক রাখতে হবে:

  • positive_max (সর্বোচ্চ ধনাত্মক সংখ্যা)
  • positive_second_max (দ্বিতীয় সর্বোচ্চ ধনাত্মক সংখ্যা)
  • negative_max (সর্বোচ্চ ঋণাত্মক সংখ্যা, অর্থাৎ নিরপেক্ষ মান আকারে সবচেয়ে বড় ঋণাত্মক)
  • negative_second_max (দ্বিতীয় সর্বোচ্চ ঋণাত্মক সংখ্যা)

শেষে যদি (positive_max * positive_second_max) > (negative_max * negative_second_max) হয়, তবে ধনাত্মক জোড়াটি রিটার্ন করুন, অন্যথায় ঋণাত্মক জোড়াটি রিটার্ন করুন।

উদাহরণ কোড

#include <iostream>
#include <climits>
#include <cmath>
using namespace std;

void maxProdPair(int arr[], int n) {
    if (n < 2) {
        cout << "No pair is present";
        return;
    }
    if (n == 2) {
        cout << "(" << arr[0] << ", " << arr[1] << ")" << endl;
        return;
    }
    int pos_max = INT_MIN, pos_second_max = INT_MIN;
    int neg_max = INT_MIN, neg_second_max = INT_MIN;

    for (int i = 0; i < n; i++) {
        if (arr[i] > pos_max) {
            pos_second_max = pos_max;
            pos_max = arr[i];
        } else if (arr[i] > pos_second_max)
            pos_second_max = arr[i];

        if (arr[i] < 0 && abs(arr[i]) > abs(neg_max)) {
            neg_second_max = neg_max;
            neg_max = arr[i];
        } else if (arr[i] < 0 && abs(arr[i]) > abs(neg_second_max))
            neg_second_max = arr[i];
    }

    if (neg_max * neg_second_max > pos_max * pos_second_max)
        cout << "(" << neg_max << ", " << neg_second_max << ")" << endl;
    else
        cout << "(" << pos_max << ", " << pos_second_max << ")" << endl;
}

int main() {
    int arr[] = {-1, -4, -3, 0, 2, -5};
    int n = sizeof(arr)/sizeof(arr[0]);
    maxProdPair(arr, n);
    return 0;
}

আউটপুট

(-5, -4)
  1. ম্যাট্রিক্সের যেকোনো কলামে সর্বোচ্চ পার্থক্যের জোড়া খুঁজে বের করা C++-তে

  2. অ্যারে অফ ইন্টিজার থেকে সর্বোচ্চ গুণফলের জোড়া খুঁজে বের করা C++-এ

  3. C++-এ অ্যারেতে সর্বোচ্চ GCD वाली পেয়ার বের করা

  4. C++-এ দেওয়া গুণফল দিয়ে N পূর্ণসংখ্যার সর্বোচ্চ GCD