हमें सकारात्मक पूर्णांकों की एक सरणी दी गई है। लक्ष्य arr[] के तत्वों के जोड़े की संख्या का पता लगाना है, जैसे कि जोड़े में तत्व (p, q) होते हैं जहां p कम से कम q बार के लिए सरणी में होता है और q कम से कम p बार के लिए सरणी में होता है।
आइए उदाहरणों से समझते हैं।
इनपुट - int arr[] ={ 3, 3, 3, 5, 5, 6, 6}
आउटपुट − एक सरणी में युग्मों की संख्या जैसे कि एक की आवृत्ति कम से कम दूसरे का मान हो − 1
स्पष्टीकरण - एक सरणी में मान्य जोड़े जहां p q बार आता है और q p बार होता है (3, 3) क्योंकि 3 एक सरणी में 3 बार आ रहा है। तो केवल एक वैध जोड़ी है इसलिए गिनती 1 है।
इनपुट - int arr[] ={ 3, 3, 3, 3, 3, 5, 5, 5, 6, 6}
आउटपुट − एक सरणी में युग्मों की संख्या जैसे कि एक की आवृत्ति कम से कम दूसरे का मान हो − 1
स्पष्टीकरण - एक सरणी में मान्य जोड़े जहां p बार q बार आता है और q बार p बार आता है (3, 3), (5, 5) और (3, 5) क्योंकि 3 5 बार हो रहा है और 5 एक सरणी में 3 बार आ रहा है . तो तीन वैध जोड़े हैं इसलिए गिनती 3 है।
नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है
-
पूर्णांक तत्वों की एक सरणी इनपुट करें और एक सरणी के आकार की गणना करें और आगे की प्रक्रिया के लिए डेटा को फ़ंक्शन में पास करें
-
p और q की घटनाओं को संग्रहीत करने के लिए एक अस्थायी चर गणना घोषित करें
-
वेक्टर प्रकार का एक चर vec और unordered_map प्रकार का um बनाएं
-
0 से एक सरणी के आकार तक के लिए लूप प्रारंभ करें
-
लूप के अंदर, um[arr[i]] को 1 से सेट करें और जांचें कि क्या उम 1 है तो वेक्टर में arr[i] पुश करें
-
0 से एक वेक्टर के आकार तक के लिए एक और लूप शुरू करें और IF um[vec[i]
-
लूप j के अंदर IF um[j]>=vec[i] चेक करें, फिर गिनती को 1 से बढ़ाएँ
-
गिनती वापस करें
-
परिणाम प्रिंट करें।
उदाहरण
#include <bits/stdc++.h> using namespace std; int pair_count(int arr[], int len){ int count = 0; vector<int> vec; unordered_map<int, int> um; for (int i = 0; i < len; i++){ um[arr[i]]++; if (um[arr[i]] == 1){ vec.push_back(arr[i]); } } for (int i = 0; i < vec.size(); i++){ if (um[vec[i]] < vec[i]){ continue; } else if (um[vec[i]] == vec[i]){ count++;; } else{ count++; for (int j = vec[i] + 1; j <= um[vec[i]]; j++){ if (um[j] >= vec[i]){ count++; } } } } return count; } int main(){ int arr[] = { 1, 1, 1, 5, 5, 1}; int size = sizeof(arr) / sizeof(arr[0]); cout<<"Count of pairs (p, q) such that p occurs in array at least q times and q occurs at least p times are: "<<pair_count(arr, size); return 0; }
आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -
Count of pairs (p, q) such that p occurs in array at least q times and q occurs at least p times are: 1