हमें पूर्णांकों की एक सरणी गिरफ्तारी [] दी गई है। इसके अलावा, दो नंबर ए और बी। लक्ष्य एआर के सभी उप-सरणी को गिनना है [] जैसे कि ए और बी की घटनाएं सभी में बराबर होती हैं। यदि सरणी [1,2,3] है और A 1 है और B 2 है। उप-सरणी [3], [1,2], [1,2,3] होगी।
आइए उदाहरणों से समझते हैं।
इनपुट - एआर [] ={ 2, 2, 1, 1, 1, 5}; ए=1, बी=5
आउटपुट - बराबर संख्या के साथ उपसरणियों की संख्या। दिए गए दो तत्वों के घटित होने की संख्या है - 4
स्पष्टीकरण - सुबारे होंगे - [2], [2], [2,2], [1,5]। पहले तीन में 1 और 5 की 0 बारंबारता होती है, अंतिम में दोनों की 1 घटना होती है।
इनपुट - गिरफ्तार [] ={ 5,3,7,5,3}; ए=1, बी=2
आउटपुट - बराबर संख्या के साथ उपसरणियों की संख्या। दिए गए दो तत्वों के घटित होने की संख्या है − 15
स्पष्टीकरण - सुबारे होंगे - (जिसमें 1 और 2 की 0 बारंबारताएं हों)
[5], [3], [7], [5], [3] - 5 [5,3], [3,7], [7,5], [5,3] - 4 [5,3,7], [3,7,5], [7,5,3] - 3 [5,3,7,5], [3,7,5,3] - 2 [5,3,5,7,5] - 1
1 और 2 दोनों की बिना किसी घटना ( 0 बारंबारता) के कुल 15 उपसरणियाँ।
नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है
हम सभी संभव सबएरे उत्पन्न करने के लिए लूप के लिए दो का उपयोग करके सरणी को पार करेंगे। i=0 से i<=size-1 और j=i से j<=size-1 तक। गठित उप-सरणी गिरफ्तारी [i] से गिरफ्तारी [जे] के बीच होगी। प्रत्येक सबरे में ए और बी की आवृत्ति की गणना करें। अगर बराबर है तो गिनती बढ़ाएँ।
-
संख्याओं की एक सरणी गिरफ्तारी [] लें।
-
फ़ंक्शन sub_EqualOccurrence(int arr[], int size, int A, int B) सरणी लेता है और बराबर संख्या के साथ सबएरे की गिनती देता है। ए और बी का।
-
प्रारंभिक गणना 0 के रूप में लें।
-
हम i=0 से i<=size-1 और j=0 से j<=size-1 तक दो for लूप का उपयोग करके सरणी को पार करेंगे।
-
उपसरणी arr[i] से arr[j] में A और B की संख्या के लिए दो चर Total_A, Total_B को 0 के रूप में लें।
-
ए और बी के साथ एआर [जे] की तुलना करें। अगर एआर [जे] ए या बी है तो वृद्धि संबंधित गिनती (total_A या Total_B)।
-
अगर कुल_ए ==कुल_बी। वृद्धि की गिनती। (उपसरणी में ए और बी के तत्वों की संख्या समान है)।
-
दोनों लूपों के अंत में, परिणाम के रूप में वापसी की गणना करें।
उदाहरण
#include <bits/stdc++.h> using namespace std; int sub_EqualOccurrence(int arr[], int size, int A, int B){ int count = 0; for (int i = 0; i <= size - 1; i++){ int total_A = 0; int total_B = 0; for (int j = i; j <= size - 1; j++){ if (arr[j] == A){ total_A++; } else if (arr[j] == B){ total_B++; } if(total_A == total_B){ count++; } } } return count; } // Driver code int main(){ int arr[] = { 2, 3, 1, 1, 4, 5 }; int size = sizeof(arr) / sizeof(arr[0]); int A = 1, B = 5; cout<<"Count of subarrays with equal number of occurrences of two given elements are: "<<sub_EqualOccurrence(arr, size, A, B); return (0); }
आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -
Count of subarrays with equal number of occurrences of two given elements are: 5