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

ऐरे में चार तत्व a, b, c, d खोजें जैसे कि a+b = c+d C++ में

मान लीजिए हमारे पास पूर्णांकों की एक सूची है। हमारा कार्य चार अलग-अलग पूर्णांकों को दो जोड़ियों जैसे (a, b) और (c, d) के रूप में खोजना है, जैसे कि a+b = c+d। यदि कई उत्तर हैं, तो केवल एक प्रिंट करें। मान लीजिए ऐरे तत्व हैं: A = [7, 5, 9, 3, 6, 4, 2], तो जोड़ियां हो सकती हैं (7, 3) और (6, 4)।

यहां हम हैशिंग तकनीक का उपयोग करेंगे। हम योग को कुंजी के रूप में और जोड़ी को मान के रूप में हैश टेबल में उपयोग करते हैं। इस समस्या को हल करने के लिए इन चरणों का पालन करना होगा।

  • i को 0 से n-1 तक के लिए करें
    • j को i+1 से n-1 तक के लिए करें
      • योग खोजें
      • यदि हैश टेबल में योग पहले से मौजूद है, तो पिछली जोड़ी और वर्तमान जोड़ी प्रिंट करें
      • अन्यथा, हैश टेबल अपडेट करें।

उदाहरण

#include <iostream>
#include <map>
using namespace std;

bool getTwoPairs(int arr[], int n) {
    map<int, pair<int, int> > hash_table;
    for (int i = 0; i < n; ++i) {
        for (int j = i + 1; j < n; ++j) {
            int sum = arr[i] + arr[j];
            if (hash_table.find(sum) == hash_table.end())
                hash_table[sum] = make_pair(i, j);
            else {
                pair<int, int> pp = hash_table[sum];
                cout << "(" << arr[pp.first] << " + " << arr[pp.second] << ") = (" << arr[i] << " + " << arr[j] << ")";
                return true;
            }
        }
    }
    cout << "No pairs found";
    return false;
}

int main() {
    int arr[] = {7, 5, 9, 3, 6, 4, 2};
    int n = sizeof arr / sizeof arr[0];
    cout << "The pairs are: ";
    getTwoPairs(arr, n);
}

आउटपुट

The pairs are: (7 + 4) = (5 + 6)

  1. सर्कुलर ऐरे में अधिकतम योग जहाँ कोई दो आसन्न तत्व न हों - C++ सर्कुलर ऐरे में अधिकतम योग जहाँ कोई दो आसन्न तत्व न हों - C++

    इस समस्या में, हमें एक सर्कुलर ऐरे cirArr[] दिया गया है। हमारा कार्य एक प्रोग्राम बनाना है जो C++ में सर्कुलर ऐरे में अधिकतम योग ढूंढे जहाँ कोई दो आसन्न तत्व न हों।समस्या विवरणसर्कुलर ऐरे के लिए, हमें ऐरे के तत्वों का अधिकतम योग ढूंढना है जहाँ आसन्न तत्वों को नहीं लिया जा सकता, यानी हमें वैकल्पिक तत

  1. - C++ में दी गई संख्या n के लिए x ढूंढें जहां x + अंकों का योग = n

    समस्या विवरण एक संख्या n दी गई है, हमें एक मान x ढूंढना है जिससे x + x के अंकों का योग = n हो। उदाहरण के लिए, n = 21 के लिए, x = 15 होगा क्योंकि 15 + (1+5) = 21। हल दृष्टिकोण सरल दृष्टिकोण: 1 से n तक पुनरावृति करें, प्रत्येक संख्या के लिए जांचें कि क्या संख्या + उसके अंकों का योग = n है। यदि हां,

  1. - C++ में दिए गए सरणी के एलिमेंट्स के फैक्टोरियल का GCD खोजें

    मान लीजिए हमारे पास N एलिमेंट्स वाली एक सरणी A है। हमें सरणी के सभी एलिमेंट्स के फैक्टोरियल का GCD निकालना है। मान लीजिए एलिमेंट्स {3, 4, 8, 6} हैं, तो फैक्टोरियल का GCD 6 होगा। यहां हम ट्रिक देखेंगे। चूंकि दो संख्याओं का GCD वह सबसे बड़ी संख्या है जो दोनों को विभाजित करती है, तो दो संख्याओं के फैक्