কম্পিউটার

C++ এ একটি বাইনারি সার্কুলার অ্যারেতে সর্বাধিক পরপর একজনের (বা শূন্য)


আমরা একটি বৃত্তাকার অ্যারে সঙ্গে দেওয়া হয়. সার্কুলার অ্যারে হল সেই অ্যারে যার জন্য আমরা বিবেচনা করি যে প্রথম উপাদানটি শেষ উপাদানের পাশে আসে। এটি সারি বাস্তবায়ন করতে ব্যবহৃত হয়। তাই আমাদের সর্বোচ্চ সংখ্যা গণনা করতে হবে। সেই অ্যারেতে পরপর 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 এর is1। অথবা সর্বাধিক পরপর 0 হল 4।

ব্যাখ্যা − Arr[] সূচক 4 থেকে এবং তারপর সূচক 0 থেকে 3। 0 হল 4।

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

  • আমরা একটি ইনপুট Arr[] নিই যাতে 0's এবং 1's এলোমেলো ক্রমে থাকে৷

  • Arr[] এর আকারের জন্য N ভেরিয়েবল ব্যবহার করা হয়।

  • বিট ব্যবহার করা হয় 1 বা 0 সংরক্ষণ করার জন্য, যে অনুসারে আমরা গণনা করব।

  • ফাংশন maxConsecutive(int arr[], int n, int bit) তিনটি ইনপুট প্যারামিটার নেয়। অ্যারে নিজেই, এর আকার এবং বিট হিসাবে 0 বা 1। বিট অতীতের গণনা প্রদান করে।

  • অ্যারে বৃত্তাকার করতে. Temp[2*n] এটিতে দুবার arr[] সংরক্ষণ করতে ব্যবহৃত হয়। arr[] temp এ কপি করার জন্য () লুপ দুবার চলে।

  • এখন আমরা যখন ( temp[k++]==bit ) ব্যবহার করে পরপর 1's (বা 0's) গণনা করব এবং চলক 'গণনা'-এ ধারাবাহিক গণনা সংরক্ষণ করব।

  • যদি এই সংখ্যাটি এখন পর্যন্ত সর্বাধিক পাওয়া যায় তবে এটিকে maxC তে সংরক্ষণ করুন৷

  • চূড়ান্ত ফলাফল হিসাবে maxC ফেরত দিন।

উদাহরণ

#include <iostream>
//to return maximum bishops possible
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

  1. C++ এ বাইনারি ট্রিতে সর্বাধিক ধারাবাহিক বৃদ্ধি পাথের দৈর্ঘ্য

  2. C++ এ সর্বোচ্চ বাইনারি ট্রি II

  3. C++ এ বাইনারি ট্রির সর্বোচ্চ প্রস্থ

  4. C++ এ সর্বাধিক বাইনারি ট্রি