Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

นับอาร์เรย์ย่อยที่มีจำนวนเท่ากับ 1 และ 0 ใน C++


เราได้รับอาร์เรย์ arr[] ที่มี 0 และ 1 เท่านั้น เป้าหมายคือการนับอาร์เรย์ย่อยทั้งหมดของ arr[] เพื่อให้การเกิดขึ้นของ 0 และ 1 เท่ากันทั้งหมด หากอาร์เรย์เป็น [1,0,0] .Subarray จะเป็น [1,0] เท่านั้น

ให้เราเข้าใจด้วยตัวอย่าง

ป้อนข้อมูล − arr[] ={ 0, 0, 1, 1, 1, 0 };

ผลผลิต − จำนวนอาร์เรย์ย่อยที่มีจำนวนเท่ากับ 1 และ 0 คือ − 4

คำอธิบาย − Subaarays จะเป็น -

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 และ 0 คือ − 1

คำอธิบาย − Subaarays จะเป็น − arr[0 ถึง 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 และ 1

  • นับเริ่มต้นเป็น 0

  • เราจะสำรวจอาร์เรย์โดยใช้สองลูปจาก i=0 ถึง i<=size-1 และ j=0 ถึง j<=size-1

  • นำสองตัวแปร total_0, total_1 เป็น 0 สำหรับจำนวน 0 และ 1 ใน subarray arr[i] ถึง arr[j]

  • เปรียบเทียบ arr[j] กับ 0 และ 1 หาก arr[j] เป็น 0 หรือ 1 ให้เพิ่มจำนวนตามลำดับ ( total_0 หรือ total_1)

  • ถ้า total_0==total_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