কম্পিউটার টিউটোরিয়াল

C++-এ বাইনারি অ্যারেতে সমান সংখ্যক ০ ও ১ বিশিষ্ট সাবঅ্যারে গণনা


আমাদের একটি অ্যারে arr[] দেওয়া আছে যাতে শুধু ০ এবং ১ রয়েছে। লক্ষ্য হলো এমন সাবঅ্যারে গুলোর সংখ্যা বের করা যাতে ০ এবং ১-এর ঘটনা (occurrence) সমান। উদাহরণস্বরূপ, অ্যারে [1,0,0] হলে সাবঅ্যারে: [1,0] মাত্র।

উদাহরণ দিয়ে বুঝি

ইনপুট − arr[] = { 0, 0, 1, 1, 1, 0 };

আউটপুট − সমান সংখ্যক ০ ও ১ বিশিষ্ট সাবঅ্যারে: ৪

ব্যাখ্যা − সাবঅ্যারে গুলো:

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 };

আউটপুট − সমান সংখ্যক ০ ও ১ বিশিষ্ট সাবঅ্যারে: ১

ব্যাখ্যা − সাবঅ্যারে: arr[0 to 1] = [0,1]

প্রোগ্রামে ব্যবহৃত পদ্ধতি

দুটি for লুপ দিয়ে সব সম্ভাব্য সাবঅ্যারে জেনারেট করব। i=0 থেকে size-1 এবং j=i থেকে size-1। সাবঅ্যারে arr[i] থেকে arr[j]। প্রতিটি সাবঅ্যারেতে ০ এবং ১-এর ফ্রিকোয়েন্সি কাউন্ট করব। সমান হলে কাউন্ট বাড়াব।

  • অ্যারে arr[] নিন।
  • sub_zeroes_ones(int arr[], int size) ফাংশন অ্যারে নিয়ে সমান ০-১ সাবঅ্যারে কাউন্ট রিটার্ন করে।
  • প্রাথমিক কাউন্ট ০।
  • দুটি লুপ: i=0 থেকে size-1, j=i থেকে size-1।
  • total_0, total_1 ০ ইনিশিয়ালাইজ করুন।
  • arr[j] ০ হলে total_0++, ১ হলে total_1++।
  • যদি total_0 == total_1 হয়, count++।
  • দুই লুপ শেষে count রিটার্ন করুন।

উদাহরণ

#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. সি++-এ দিয়ে গুণফল সমান ট্রিপলেট গণনা (ডুপ্লিকেট অনুমোদিত)

  2. C++-এ বিটওয়াইজ AND শূন্য হয় এমন ট্রিপলেটের সংখ্যা

  3. C++-এ বাউন্ডেড সর্বোচ্চ মান সহ সাবঅ্যারে গণনা

  4. C++-এ নাইস সাবঅ্যারে গণনা