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

C++ में अनसॉर्टेड ऐरे में समान योग वाले सभी जोड़े प्रिंट करना


इस समस्या में, हमारे पास एक अनसॉर्टेड ऐरे है और हमें इस ऐरे के भीतर उन सभी जोड़ों को प्रिंट करना है जिनका योग समान हो।

उदाहरण

Input: array = [12, 13, 20, 5] 
Output: [12, 13] and [20, 5] have sum 25.

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

इसके लिए, हमें दो मैप की आवश्यकता होगी: एक सभी जोड़ों और उनके योग को संग्रहीत करने के लिए और दूसरा सभी योग और उनके संबंधित जोड़ों को संग्रहीत करने के लिए।

तो, Map1 → key = जोड़े; value → योग

Map2 → key = योग पूर्णांक; value → जोड़ों का वेक्टर

अब, उन सभी मानों को प्रिंट करें जिनका योग मान समान हो।

उदाहरण

उपरोक्त तर्क को दर्शाने वाला प्रोग्राम:

#include <bits/stdc++.h> 
using namespace std; 

void findEqualSumPairs(int A[], int n) { 
    map<int, vector<pair<int, int> > > map1; 
    for (int i = 0; i < n - 1; i++) { 
        for (int j = i + 1; j < n; j++) { 
            pair<int, int> p = make_pair(A[i], A[j]); 
            map1[A[i] + A[j]].push_back(p); 
        } 
    } 
    for (auto value = map1.begin(); value != map1.end(); value++) { 
        if (value->second.size() > 1) { 
            for (int i = 0; i < value->second.size(); i++) { 
                cout << "[ " << value->second[i].first << ", " << value->second[i].second << "] "; 
            } 
            cout << "have sum : " << value->first << endl; 
        } 
    } 
} 

int main() { 
    int A[] = { 6, 4, 12, 10, 22, 11, 8, 2 }; 
    int n = sizeof(A) / sizeof(A[0]); 
    cout << "Pairs with same sum are : \n"; 
    findEqualSumPairs(A, n); 
    return 0; 
}

आउटपुट

Pairs with same sum are -

[ 6, 4] [ 8, 2] have sum : 10 
[ 4, 8] [ 10, 2] have sum : 12 
[ 6, 8] [ 4, 10] [ 12, 2] have sum : 14 
[ 6, 10] [ 4, 12] have sum : 16 
[ 6, 12] [ 10, 8] have sum : 18

  1. - C++ में दिए गए योग वाले सभी ट्रिपलेट प्रिंट करें

    इस समस्या में, हमें अद्वितीय पूर्णांकों की एक सरणी और एक योग दिया गया है। और हमें उन ट्रिपलेट को ढूंढना है जो समान योग बना सकते हैं। समस्या को हल करने के लिए एक उदाहरण लेते हैं - इनपुट: सरणी = {0 , 2 , -1 , 1, -2} योग = 1 आउटपुट: 1 2 -2 0 2 -1 इस समस्या को हल करने के लिए, हम उन सभी ट्रिपलेट को ढूंढे

  1. - C++ में दिए गए योग वाले सभी युग्म प्रिंट करें

    इस समस्या में, हमें पूर्णांकों की एक सरणी और एक पूर्णांक योग दिया गया है और हमें उन सभी पूर्णांक युग्मों को प्रिंट करना है जिनका योग योग मान के बराबर है। समस्या को समझने के लिए एक उदाहरण लेते हैं : इनपुट - सरणी = {1, 6, -2, 3} योग = 4 आउटपुट - (1, 3) , (6, -2) यहां, हमें दिए गए योग मान वाले युग्म चा

  1. - C++ में सम ऐरे पजल (बिना घटाव ऑपरेटर के)

    यहां हम ऐरे से संबंधित एक रोचक समस्या देखेंगे। n तत्वों वाला एक ऐरे है। हमें n तत्वों का एक और ऐरे बनाना है। लेकिन दूसरे ऐरे का i-th स्थान पहले ऐरे के i-th तत्व को छोड़कर सभी तत्वों का योग रखेगा। और एक प्रतिबंध है कि हम इस समस्या में घटाव ऑपरेटर का उपयोग नहीं कर सकते। यदि हम घटाव ऑपरेशन का उपयोग कर