हमें दो सरणियों के साथ दिया गया है, मान लीजिए, arr_1[] और arr_2[] पूर्णांक मान रखते हैं और कार्य समान अंकों के योग वाले अलग-अलग जोड़े की गणना करना है। इसका अर्थ है, एक मान को arr_1[] से चुना जाना चाहिए और दूसरा मान arr_2[] से एक जोड़ी बनाने के लिए चुना जाना चाहिए और दोनों मानों का योग अंक समान होना चाहिए।
एक प्रकार की डेटा संरचना को व्यवस्थित करता है जो एक ही प्रकार के तत्वों के एक निश्चित आकार के अनुक्रमिक संग्रह को संग्रहीत कर सकता है। डेटा के संग्रह को संग्रहीत करने के लिए एक सरणी का उपयोग किया जाता है, लेकिन एक सरणी को उसी प्रकार के चर के संग्रह के रूप में सोचना अक्सर अधिक उपयोगी होता है।
उदाहरण के लिए
Input − int arr_1[] = {1, 22, 42, 17} Int arr_2[] = {1, 31, 6, 8} Output − count is 4
स्पष्टीकरण - कुल मिलाकर 4 जोड़े हैं जिनके अंकों का योग समान है और वे (1, 1), (22, 31), (42, 6) और (17, 8) हैं।
Input − int arr_1[] = {1, 22, 42, 17} Int arr_2[] = {2, 78, 6, 18} Output − count is 1
स्पष्टीकरण - कुल मिलाकर केवल एक युग्म है जिसमें अंकों का योग समान है और वह है (42, 6)।
Input − int arr_1[] = {1, 22, 42, 17} Int arr_2[] = {2, 78, 16, 18} Output − count is 0
स्पष्टीकरण - ऐसा कोई युग्म नहीं है जिसके अंकों का योग समान हो, इसलिए गिनती 0 है।
नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है -
-
दो सरणियाँ बनाएँ मान लें, arr_1[] और arr_2[]
-
लंबाई () फ़ंक्शन का उपयोग करके दोनों सरणियों की लंबाई की गणना करें जो एक सरणी में तत्वों के अनुसार एक पूर्णांक मान लौटाएगा।
-
एक सेट प्रकार वैरिएबल बनाएं मान लें कि सेंट
-
i से 0 के लिए लूप प्रारंभ करें और arr_1 के आकार से कम []
-
लूप के अंदर, j से 0 और arr_2[] के आकार से कम j के लिए एक और लूप प्रारंभ करें।
-
जांचें कि क्या Sum(arr[i]) =sum(arr_2[j]) फिर जांचें कि क्या arr_1[i] arr_2[j] से कम है, फिर डालें(make_pair(arr_1[i], arr_2[j])
-
अन्यथा, सम्मिलित करें(make_pair(arr_2[j], arr_1[i]).
-
वापसी st.size ()
-
परिणाम प्रिंट करें।
उदाहरण
#include <iostream> #include <set> using namespace std; // Function to find the // sum of digits of a number int sumdigits(int n){ int sum = 0; while (n > 0){ sum += n % 10; n = n / 10; } return sum; } //function to count the number of pairs int paircount(int arr_1[], int arr_2[], int size1, int size2){ // set is used to avoid duplicate pairs set<pair<int, int> > myset; for (int i = 0; i < size1; i++){ for (int j = 0; j < size2; j++){ // check sum of digits // of both the elements if (sumdigits(arr_1[i]) == sumdigits(arr_2[j])){ if (arr_1[i] < arr_2[j]){ myset.insert(make_pair(arr_1[i], arr_2[j])); } else{ myset.insert(make_pair(arr_2[j], arr_1[i])); } } } } // return size of the set return myset.size(); } // Driver code int main(){ int arr_1[] = { 1, 22, 42, 17 }; int arr_2[] = { 5, 31, 6, 8 }; int size1 = sizeof(arr_1) / sizeof(arr_1[0]); int size2 = sizeof(arr_2) / sizeof(arr_2[0]); cout <<"count is "<<paircount(arr_1, arr_2, size1, size2); return 0; }
आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो हमें निम्न आउटपुट &miuns;
प्राप्त होगाcount is 3