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

C++ में समान संख्या में 1's और 0's वाले सबएरे की गिनती


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

उदाहरण सहित समझ

इनपुट - arr[] = { 0, 0, 1, 1, 1, 0 };

आउटपुट - समान संख्या में 1's और 0's वाले सबएरे की संख्या: 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].

इनपुट - arr[] = { 0, 1, 1, 1, 1 };

आउटपुट - समान संख्या में 1's और 0's वाले सबएरे की संख्या: 1

व्याख्या - सबएरे होंगे: arr[0 to 1] = [0,1]

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

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

  • संख्याओं की एक सरणी arr[] लें।
  • फंक्शन sub_zeroes_ones(int arr[], int size) सरणी लेता है और समान संख्या में 0's और 1's वाले सबएरे की संख्या लौटाता है।
  • प्रारंभिक काउंट 0 लें।
  • दो फॉर लूप का उपयोग करके i=0 से i<=size-1 और j=0 से j<=size-1 तक सरणी को ट्रैवर्स करें।
  • सबएरे arr[i] से arr[j] में 0's और 1's की संख्या के लिए दो चर total_0, total_1 को 0 के रूप में लें।
  • arr[j] की तुलना 0 और 1 से करें। यदि arr[j] 0 या 1 है तो संबंधित काउंट (total_0 या total_1) बढ़ाएँ।
  • यदि total_0 == total_1। काउंट बढ़ाएँ। (सबएरे में तत्वों के रूप में 0's और 1's की समान संख्या है)।
  • दोनों लूप के अंत में, परिणाम के रूप में काउंट लौटाएँ।

उदाहरण

#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);
    return 0;
}

आउटपुट

Count of subarrays with equal number of 1's and 0's are: 4
  1. - बिटवाइज AND शून्य के बराबर वाले ट्रिपलेट C++ में

    मान लीजिए हमारे पास पूर्णांकों की एक सरणी A है। हमें सूचकांकों (i, j, k) के उन ट्रिपलेट्स की संख्या ढूंढनी है जहां 0 <= i, j, k < A का आकार और A[i] AND A[j] AND A[k] == 0, जहां AND बिटवाइज-AND ऑपरेटर दर्शाता है। उदाहरण के लिए, यदि इनपुट [3,1,2] है, तो आउटपुट 12 होगा। हल करने का दृष्टिकोण हम सभी जो

  1. - C++ में सीमित अधिकतम के साथ उपसरणी की संख्या

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

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

    मान लीजिए हमारे पास इंटीजर्स का एक ऐरे nums और एक इंटीजर k है। एक सबएरे को नाइस सबएरे के रूप में जाना जाता है यदि उसमें k ऑड नंबर हैं। हमें नाइस सब-एरे की संख्या ढूंढनी है। यदि ऐरे [1,1,2,1,1] है, और k = 3, तो आउटपुट 2 होगा, क्योंकि सबएरे [1,1,2,1], और [1,2,1,1] हैं।इसे हल करने के लिए, हम निम्नलिखित