我们得到了一个圆形数组。圆形数组是我们考虑的第一个元素紧挨着最后一个元素的数组。它用于实现队列。因此,我们必须计算最大数量。该数组中连续1或0的数量。
让我们通过示例来理解。
输入− Arr [] = {1,1,0,1,0,1,0,1,1,1}
输出-最大连续1为5。或者最大连续0为1。
解释-从Arr []索引7到9,然后从索引0和1开始。1表示5。没有连续的0而是1。
输入− Arr [] = {0,0,0,1,0}
输出-最大连续1为1。或最大连续0为4。
说明-从Arr []索引4开始,然后从索引0到3。0为4。
我们采用一个Arr []输入,它随机包含0和1。
变量N用于Arr []的大小。
位用于存储1或0,我们将根据该值进行计数。
函数maxConsecutive(int arr [],int n,int bit)具有三个输入参数。数组本身,其大小和0或1(按位)。返回过去的位数。
使数组变为圆形。Temp [2 * n]用于在其中存储两次arr []。While()循环运行两次以将arr []复制到temp。
现在,我们将使用while(temp [k ++] == bit)对连续的1(或0)进行计数,并将连续的计数存储在变量'count'中。
如果此计数是目前为止找到的最大计数,请将其存储在maxC中。
返回maxC作为最终结果。
#include <iostream>
//返回最大的主教可能
int maxConsecutive(int arr[],int n,int bit){
   int count=0;
   int temp[2*n]={0};
   int maxC=0;
   int j=0,k=0; //to twice copy arr[]
   while(j<2){
      for(int i=0;i<n;i++){
         temp[k++]=arr[i];
      }
      j++;
   }
   k=0;
   for(int i=0;i<2*n; i++){
      count=0;
      while(temp[k++]==bit){
         ++count;
      }
      if(maxC<count)
         maxC=count;
   }
   return maxC;
}
int main(){
   int Arr[]={1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1 };
   int N = 12;
   int bit=1;
   printf("Maximum Consecutive 1's in circular array: %d",maxConsecutive(Arr,N,bit));
   bit=0;
   printf("\nMaximum Consecutive 0's in circular array: %d",maxConsecutive(Arr,N,bit));
   return 0;
}输出结果
如果我们运行上面的代码,它将生成以下输出-
Maximum Consecutive 1's in circular array: 6 Maximum Consecutive 0's in circular array: 2