Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में पूर्णांकों की सरणी में अधिकतम गुणनफल वाली जोड़ी ढूंढें


समस्या विवरण

एक सरणी A दी गई है जिसमें n तत्व हैं (सकारात्मक और नकारात्मक दोनों)। हमें एक जोड़ी (x, y) ढूंढनी है जिसका गुणनफल अधिकतम हो। उदाहरण के लिए, सरणी A = [-1, -4, -3, 0, 2, -5] के लिए, अधिकतम गुणनफल वाली जोड़ी (-4, -5) होगी क्योंकि उनका गुणनफल 20 है।

हल दृष्टिकोण

हमें चार मान ट्रैक करने होंगे:

  • 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++ में पूर्णांकों की सरणी में अधिकतम गुणनफल वाली जोड़ी ढूंढें

    समस्या विवरण एक सरणी A दी गई है जिसमें n तत्व हैं (सकारात्मक और नकारात्मक दोनों)। हमें एक जोड़ी (x, y) ढूंढनी है जिसका गुणनफल अधिकतम हो। उदाहरण के लिए, सरणी A = [-1, -4, -3, 0, 2, -5] के लिए, अधिकतम गुणनफल वाली जोड़ी (-4, -5) होगी क्योंकि उनका गुणनफल 20 है। हल दृष्टिकोण हमें चार मान ट्रैक करने हों

  1. - C++ में सरणी में अधिकतम GCD वाली जोड़ी ढूंढना

    मान लीजिए हमारे पास धनात्मक पूर्णांकों की एक सरणी है। हमारा कार्य सरणी से पूर्णांकों की जोड़ी ढूंढना है, जहां GCD मान अधिकतम है। मान लीजिए A = {1, 2, 3, 4, 5}, तो आउटपुट 2 है। जोड़ी (2, 4) का GCD 2 है, अन्य GCD मान 2 से कम हैं।इस समस्या को हल करने के लिए, हम एक काउंट सरणी बनाए रखेंगे जो प्रत्येक तत्

  1. - C++ में दिए गए उत्पाद के साथ N पूर्णांकों का अधिकतम GCD

    मान लीजिए हमारे पास दो पूर्णांक N और P हैं। P, N अज्ञात पूर्णांकों का उत्पाद है। हमें उन पूर्णांकों के अधिकतम संभव GCD को ढूंढना है। मान लीजिए N = 3, और P = 24, तो अलग-अलग समूह होंगे जैसे {1, 1, 24}, {1, 2, 12}, {1, 3, 8}, {1, 4, 6}, {2, 2, 6}, {2, 3, 4}। GCD हैं: 1, 1, 1, 1, 2, 1। तो उत्तर यहां 2 ह