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

C++ . में 1 और 0 की समान संख्या के साथ उप-सरणी गिनें

हमें एक सरणी गिरफ्तारी [] दी गई है जिसमें केवल 0 और 1 है। लक्ष्य गिरफ्तारी [] के सभी उप-सरणी को गिनना है जैसे कि 0 और 1 की घटनाएँ सभी में समान हैं। यदि सरणी [1,0,0] है। Subarray केवल [1,0] होगी।

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

इनपुट - एआर [] ={ 0, 0, 1, 1, 1, 0};

आउटपुट − 1 और 0 की समान संख्या वाले उपसरणियों की संख्या है − 4

स्पष्टीकरण - सुबारे होंगे -

arr[0 to 3] = [0,0,1,1],
arr[1 to 2] = [0,1],
arr[4 to 5] =[1,0],
Arr[0 to 5] =[0,0,1,1,1,0].

इनपुट - एआर [] ={ 0, 1, 1, 1, 1};

आउटपुट − 1 और 0 की समान संख्या वाली उपसरणियों की संख्या है - 1

स्पष्टीकरण - सुबारे होंगे - arr[0 to 1] =[0,1]

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

हम सभी संभव सबएरे उत्पन्न करने के लिए लूप के लिए दो का उपयोग करके सरणी को पार करेंगे। i=0 से i<=size-1 और j=i से j<=size-1 तक। गठित उप-सरणी गिरफ्तारी [i] से गिरफ्तारी [जे] के बीच होगी। प्रत्येक उप-सरणी में 0 और 1 की आवृत्ति गिनें। अगर बराबर है तो गिनती बढ़ाएँ।

  • संख्याओं की एक सरणी गिरफ्तारी [] लें।

  • फ़ंक्शन sub_zeroes_ones(int arr[], int size) सरणी लेता है और बराबर संख्या के साथ सबएरे की गिनती देता है। 0 और 1 के।

  • प्रारंभिक गणना 0 के रूप में लें।

  • हम i=0 से i<=size-1 और j=0 से j<=size-1 तक दो for लूप का उपयोग करके सरणी को पार करेंगे।

  • उप-सरणी arr[i] से arr[j] में 0 और 1 की संख्या के लिए दो चर Total_0, Total_1 को 0 के रूप में लें।

  • arr[j] की 0 और 1 से तुलना करें। अगर arr[j] 0 या 1 है तो संबंधित गणना में वृद्धि करें (total_0 या Total_1)।

  • अगर कुल_0==कुल_1. वृद्धि की गिनती। (उपसरणी में तत्वों के समान 0 और 1 की संख्या समान है)।

  • दोनों लूपों के अंत में, परिणाम के रूप में वापसी की गणना करें।

उदाहरण

#include <bits/stdc++.h>
using namespace std;
int sub_zeroes_ones(int arr[], int size){
   int count = 0;
   for (int i = 0; i <= size - 1; i++){
      int total_0 = 0;
      int total_1 = 0;
      for (int j = i; j <= size - 1; j++){
         if (arr[j] == 0){
            total_0++;
         }
         else if (arr[j] == 1){
            total_1++;
         }
         if(total_0 == total_1){
            count++;
         }
      }
   }
   return count;
}
int main(){
   int arr[] = {0, 1, 1, 0, 0};
   int size = sizeof(arr)/sizeof(arr[0]);
   cout<<"Count of subarrays with equal number of 1’s and 0’s are: "<<sub_zeroes_ones(arr, size);
}

आउटपुट

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

Count of subarrays with equal number of 1’s and 0’s are: 4

  1. C++ में बिटवाइज़ और इक्वल टू ज़ीरो के साथ ट्रिपल्स

    मान लीजिए कि हमारे पास पूर्णांक A की एक सरणी है। हमें सूचकांकों (i, j, k) के त्रिगुणों की संख्या इस प्रकार ज्ञात करनी है कि - 0 <=i <ए का आकार 0 <=j

  1. सी ++ में बाउंड मैक्सिमम के साथ सबएरे की संख्या

    मान लीजिए कि हमारे पास धनात्मक पूर्णांकों की एक सरणी A है, और दो धनात्मक पूर्णांक L और R भी दिए गए हैं। हमें (सन्निहित, गैर-रिक्त) उप-सरणियों की संख्या ज्ञात करनी है जैसे कि उस उप-सरणी में अधिकतम सरणी तत्व का मान कम से कम L और अधिकतम R हो। इसलिए यदि A =[2,1,4,3] और एल =2 और आर =3, तो आउटपुट 3 होगा क

  1. C++ में नाइस सबएरे की संख्या गिनें

    मान लीजिए कि हमारे पास पूर्णांक संख्याओं की एक सरणी है और एक पूर्णांक k है। एक सबअरे को अच्छा सबअरे के रूप में जाना जाता है यदि उस पर k विषम संख्याएँ हों। हमें अच्छे उप-सरणियों की संख्या ज्ञात करनी है। तो यदि सरणी [1,1,2,1,1] है, और k =3 है, तो आउटपुट 2 होगा, क्योंकि उप-सरणी [1,1,2,1] और [1,2,1] हैं