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

दो सरणियों से उन जोड़ों की गणना करें जिनका योग K के बराबर है C++ में


हमें दो सरणी 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

आउटपुट

योग K वाले जोड़ों की संख्या: 4

व्याख्या

जोड़े होंगे (Arr1[0], Arr2[4]) -> (1,3) (Arr1[1], Arr2[2]) -> (3,1) (Arr1[2], Arr2[1]) -> (2,2) (Arr1[3], Arr2[2]) -> (3,1) अन्य सभी जोड़े पहले से मौजूद हैं। कुल अद्वितीय जोड़े 4।

इनपुट

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

आउटपुट

योग K वाले जोड़ों की संख्या: 1

व्याख्या

जोड़े होंगे (Arr1[1], Arr2[0]) -> (2,1) अन्य सभी जोड़े पहले से मौजूद हैं। कुल अद्वितीय जोड़े 1।

नीचे दिए गए प्रोग्राम में उपयोग किया गया दृष्टिकोण

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

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

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

  • प्रारंभिक चर count को 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) //केवल योग=k वाले जोड़े{             if(umap.find(arr1[i]) == umap.end()) //केवल अद्वितीय जोड़े{                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; //सरणी की लंबाई    cout <<endl<< "योग K वाले जोड़ों की संख्या: "<<pairsumisK(Arr1,Arr2,K,len1,len2);    return 0; }

आउटपुट

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

योग K वाले जोड़ों की संख्या: 0

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

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

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

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

  1. दो BSTs से योग x वाले नोड जोड़ों की गणना - C++ दो BSTs से योग x वाले नोड जोड़ों की गणना - C++

    समस्या विवरण हमें दो बाइनरी सर्च ट्री (BST) और एक मान x दिया गया है। लक्ष्य उन नोड जोड़ों की गणना करना है जहाँ एक नोड पहले BST से और दूसरा दूसरे BST से हो, और उनके डेटा का योग x के बराबर हो। उदाहरण आउटपुट: 1 (जोड़ी: 8+6=14) आउटपुट: 2 (जोड़ियाँ: 5+15=20, 4+16=20) दृष्टिकोण पहले BST को इनऑर्डर (छोटे