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

C++ में सरणी में उन जोड़ों को ढूंढना जिनका योग पहले से सरणी में मौजूद है


इस समस्या में, हमें N पूर्णांकों वाली एक सरणी arr[] दी जाती है। हमारा कार्य सरणी में उन जोड़ों को ढूंढना है जिनका योग पहले से सरणी में मौजूद है। हमें उन जोड़ों को ढूंढना है जिनका योग मान = सरणी में एक मान है।

आइए एक उदाहरण से समस्या को समझते हैं,

इनपुट

arr[] = {1, 2, 4, 6, 7}

आउटपुट

(1, 6), (2, 4)

व्याख्या

जोड़े (1, 6) के लिए, मानों का योग 7 है जो सरणी में मौजूद है।

जोड़े (2, 4) के लिए, मानों का योग 6 है जो सरणी में मौजूद है।

समाधान दृष्टिकोण

इस समस्या का एक सरल समाधान सरणी के तत्वों का उपयोग करके सभी संभावित जोड़े ढूंढना है। फिर जोड़े के मानों का योग निकालें। इस योग मान को सरणी में खोजें, यदि मौजूद है तो प्रिंट करें।

साथ ही, हमारे पास जोड़ों की संख्या के लिए एक काउंटर होगा। और यदि यह 0 है, तो हम "कोई जोड़ा नहीं मिला" प्रिंट करेंगे।

हमारे समाधान की कार्यप्रणाली को दर्शाने वाला प्रोग्राम,

उदाहरण

#include <iostream> using namespace std; void findSumPairsArr(int arr[], int n){    int pairCount = 0;    for (int i = 0; i < n; i++) {       for (int j = i + 1; j < n; j++) {          for (int k = 0; k < n; k++) {             if (arr[i] + arr[j] == arr[k]) {                cout<<"( "<<arr[i]<<", "<<arr[j]<<" ), sum = "<<(arr[i] + arr[j])<<"\n";                pairCount++;             }          }       }    }    if (!pairCount)       cout<<"No Such Pairs found !"; } int main() {    int arr[] = { 1, 2, 4, 6, 7 };    int n = sizeof(arr) / sizeof(arr[0]);    cout<<"Pairs in array whose sum already exists in array : \n";    findSumPairsArr(arr, n);    return 0; }

आउटपुट

सरणी में वे जोड़े जिनका योग पहले से सरणी में मौजूद है -

( 1, 6 ), sum = 7 ( 2, 4 ), sum = 6

एक अन्य दृष्टिकोण जो अधिक प्रभावी होता है, वह है हैश टेबल का उपयोग करके समस्या को हल करना। हम सभी जोड़ों की जांच करेंगे और फिर उनका योग निकालेंगे और जांचेंगे कि क्या यह सरणी में मौजूद है और इसका ट्रैक रखेंगे। यदि pairCount 0 है, तो "No Such Pairs found !" प्रिंट करें।

यहां, C में हैश टेबल का कार्यान्वयन unordered_set का उपयोग करके किया गया है।

हमारे समाधान की कार्यप्रणाली को दर्शाने वाला प्रोग्राम,

उदाहरण

#include <bits/stdc++.h> using namespace std; void findSumPairsArr(int arr[], int n) {    unordered_set<int> HT;    for (int i = 0; i < n; i++)       HT.insert(arr[i]);    int pairCount = 0;    for (int i = 0; i < n; i++) {       for (int j = i + 1; j < n; j++) {          if (HT.find(arr[i] + arr[j]) != HT.end()) {             cout<<"( "<<arr[i]<<", "<<arr[j]<<" ), sum =             "<<(arr[i] + arr[j])<<"\n";             pairCount ++;          }       }    }    if (!pairCount)    cout<<"No Such Pairs found !"; } int main() {    int arr[] = {1, 2, 4, 6, 7 };    int n = sizeof(arr) / sizeof(arr[0]);    cout<<"Pairs in array whose sum already exists in array : \n";    findSumPairsArr(arr, n);    return 0; }

आउटपुट

सरणी में वे जोड़े जिनका योग पहले से सरणी में मौजूद है -

( 1, 6 ), sum = 7 ( 2, 4 ), sum = 6

  1. - C++ में सरणी में स्थानीय न्यूनतम ज्ञात करें

    मान लीजिए हमारे पास n तत्वों की एक सरणी A है। हमें सरणी का स्थानीय न्यूनतम ढूंढना है। सरणी A में, तत्व A[x] को स्थानीय न्यूनतम कहा जाता है यदि यह अपने दोनों पड़ोसियों से कम या बराबर है। कोने के तत्वों के लिए केवल एक पड़ोसी माना जाएगा। और यदि एक से अधिक स्थानीय न्यूनतम उपलब्ध हैं, तो केवल एक वापस करे

  1. - C++ में सरणी के सभी विशिष्ट सबसेट (या सबसीक्वेंस) योग ढूंढना

    मान लीजिए हमारे पास पूर्णांकों का एक सेट है। विशिष्ट योग ढूंढें जो दिए गए सेट के सबसेट से बनाए जा सकते हैं और उन्हें आरोही क्रम में प्रिंट करें। सरणी तत्वों का योग छोटा है। उदाहरण: सरणी [1, 2, 3] के लिए आउटपुट 0, 1, 2, 3, 4, 5, 6 होगा। विशिष्ट सबसेट हैं {}, {1}, {2}, {3}, {1, 2}, {2, 3}, {1, 3}, {1,

  1. - C++ में सरणी में उन सभी जोड़े (a,b) और (c,d) को खोजें जो ab = cd को संतुष्ट करते हैं

    मान लीजिए हमारे पास एक सरणी A है, उस सरणी से हमें दो जोड़े (a, b) और (c, d) चुनने हैं, जैसे कि ab = cd। मान लीजिए सरणी A = [3, 4, 7, 1, 2, 9, 8]। आउटपुट जोड़े हैं (4, 2) और (1, 8)। इसे हल करने के लिए, हम इन चरणों का पालन करेंगे: i := 0 से n-1 तक, करें j := i + 1 से n-1 तक, करें product = arr[i]