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

C++ में K के बराबर योग वाले दो सरणियों से जोड़े गिनें

हमें दो सरणियाँ Arr1[] और Arr2[] और एक संख्या K दी गई है। लक्ष्य दोनों सरणियों के तत्वों के अद्वितीय जोड़े को खोजना है जैसे कि उनका योग K है। जोड़े फॉर्म के होंगे ( Arr1[i], Arr2[j ] ) जहां Arr1[i]+Arr2[j]==K.

हम i और j के लिए दो लूपों का उपयोग करके पार करेंगे। यदि योग (Arr1[i]+Arr2[j])==K. और जोड़ी unordered_map में मौजूद नहीं है। इसे मानचित्र और वृद्धि गणना में जोड़ें।

आइए उदाहरणों से समझते हैं।

इनपुट

Arr1[]={ 1,3,2,4,3,2 }; Arr2[]={ 0,2,1,2,3 }; K=4

आउटपुट

Number of pairs with sum K : 4

स्पष्टीकरण

Pairs will be
( Arr1[0], Arr2[4] ) → (1,3)
( Arr1[1], Arr2[2] ) → (3,1)
( Arr1[2], Arr2[1] ) → (2,2)
( Arr1[3], Arr2[2] ) → (3,1)
All other pairs already exist.Total unique pairs 4.

इनपुट

Arr1[]={ 0,2,1,2,3}; Arr2[]={ 1,1,1,1,1 }; K=3

आउटपुट

Number of pairs with sum K : 1

स्पष्टीकरण

Pairs will be
( Arr1[1], Arr2[0] ) → (2,1)
All other pairs already exist.Total unique pairs 1.

नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है

  • हम योग के लिए दो सरणियाँ Arr1[] और Arr2[] और एक चर K लेते हैं।

  • दोनों सरणियों की लंबाई को दर्शाने के लिए Len1 और Len2 का उपयोग किया जाता है।

  • फ़ंक्शन जोड़ेसुमिसके(int arr1[],int arr2[],int k,int l1,int l2) सभी चर लेता है और sum=k के साथ दोनों सरणियों से तत्वों के अद्वितीय जोड़े की गिनती देता है।

  • जोड़े के लिए प्रारंभिक चर गणना को 0 के रूप में लें।

  • अद्वितीय जोड़ियों को संग्रहित करने के लिए unordered_map umap लें।

  • लूप के लिए दो का उपयोग करके दोनों सरणियों को पार करें।

  • arr1[] में तत्वों के लिए i=0 से i

  • जाँच करें कि क्या योग arr1[i]+arr2[j]=k. यदि हाँ, तो जाँच करें कि क्या यह जोड़ी umap.find(...)==umap.end() के माध्यम से मौजूद है।

  • यदि यह इस जोड़ी को umap और वृद्धि गणना में नहीं जोड़ता है।

  • सभी लूपों के अंत में गिनती में ऐसे जोड़ों की कुल संख्या होगी।

  • परिणाम के रूप में गिनती लौटाएं।

उदाहरण

#include <bits/stdc++.h>
using namespace std;
int pairsumisK(int arr1[],int arr2[],int k,int l1,int l2){
   int count = 0;
   unordered_map<int, int> umap;
   for (int i = 0; i < l1; i++){
      for (int j = 0; j < l2; j++){
         int sum=arr1[i]+arr2[j];
         if(sum==k) //pairs with sum=k only{
            if(umap.find(arr1[i]) == umap.end()) //unique pairs only{
               umap.insert(make_pair(arr1[i],arr2[j]));
            }
         }
      }
   }
   return count;
}
int main(){
   int Arr1[]={ 1,2,3,0,2,4 };
   int Arr2[]={ 3,2,5,2 };
   int len1=sizeof(Arr1)/sizeof(Arr1[0]);
   int len2=sizeof(Arr2)/sizeof(Arr2[0]);
   int K=5; //length of array
   cout <<endl<< "Number of pairs with sum K : "<<pairsumisK(Arr1,Arr2,K,len1,len2);
   return 0;
}

आउटपुट

यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -

Number of pairs with sum K : 0

  1. C++ में योग विभाज्य 'k' वाले उप-मैट्रिस की गणना करें

    इनपुट के रूप में एक पंक्ति x col मैट्रिक्स को देखते हुए। लक्ष्य मैट्रिक्स [पंक्ति] [col] के भीतर सभी सबमैट्रिस को ढूंढना है, जैसे कि उस सबमैट्रिक्स के तत्वों का योग पूर्णांक k से विभाज्य है। यदि मैट्रिक्स मैट[3][3] है और k 4 है तो सबमैट्रिस नीचे दिखाए गए अनुसार होंगे:- आइए उदाहरणों से समझते हैं।

  1. C++ प्रोग्राम में क्रम में दो सरणियों से तत्वों को चुनकर अधिकतम योग

    इस समस्या में, हमें दो सरणियाँ arr1[] और arr2[], और दो संख्याएँN और M दी जाती हैं। N, arr1 से लिए गए तत्वों की संख्या देता है। M arr2 से लिए गए तत्वों की संख्या देता है। हमें arr1[i] से arr2[i] में से किसी एक तत्व का चयन करना होगा, जिसके लिए योग को अधिकतम बनाता है, लेकिन अधिकतम N को arr1 और M से

  1. दो बीएसटी से जोड़े की गणना करें जिनकी राशि सी ++ में दिए गए मान x के बराबर है

    हमें इनपुट के रूप में दो बाइनरी सर्च ट्री और एक वेरिएबल x दिया गया है। लक्ष्य प्रत्येक पेड़ से नोड्स के जोड़े को ढूंढना है ताकि नोड्स के मूल्य का योग x के बराबर हो। BST_1 से नोड 1 और BST_2 से नोड 2 लें और दोनों का डेटा भाग जोड़ें। यदि योग =x. वेतन वृद्धि की संख्या। आइए उदाहरणों से समझते हैं। इनपुट