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

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

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

समस्या को समझने के लिए एक उदाहरण लेते हैं,

इनपुट

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

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

यहाँ, 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. सी ++ में एक सरणी में स्थानीय मिनीमा खोजें

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

  1. C++ में किसी सरणी के सभी अलग-अलग सबसेट (या बाद के) योग खोजें

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

  1. सरणी में सभी जोड़े (ए, बी) और (सी, डी) खोजें जो सी ++ में एबी =सीडी को संतुष्ट करते हैं

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