Computer >> Máy Tính >  >> Lập trình >> C ++

Đếm 1 trong một mảng nhị phân được sắp xếp trong C ++

Trong hướng dẫn này, chúng ta sẽ thảo luận về một chương trình để tìm số 1 trong một mảng nhị phân được sắp xếp.

Đối với điều này, chúng tôi sẽ được cung cấp một mảng chỉ chứa 1 và 0. Nhiệm vụ của chúng tôi là đếm số lượng 1 có trong mảng.

Ví dụ

#include <bits/stdc++.h>
using namespace std;
//returning the count of 1
int countOnes(bool arr[], int low, int high){
   if (high >= low){
      int mid = low + (high - low)/2;
      if ( (mid == high || arr[mid+1] == 0) && (arr[mid] == 1))
         return mid+1;
      if (arr[mid] == 1)
         return countOnes(arr, (mid + 1), high);
      return countOnes(arr, low, (mid -1));
   }
   return 0;
}
int main(){
   bool arr[] = {1, 1, 1, 1, 0, 0, 0};
   int n = sizeof(arr)/sizeof(arr[0]);
   cout << "Count of 1's in given array is " << countOnes(arr, 0, n-1);
   return 0;
}

Đầu ra

Count of 1's in given array is 4