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

C++-এ বাইনারি সার্কুলার অ্যারেতে সর্বোচ্চ সান্মুখ্য ১ বা ০


আমাদের একটি সার্কুলার অ্যারে দেওয়া আছে। সার্কুলার অ্যারে হল এমন অ্যারে যেটির জন্য আমরা ধরে নিই প্রথম উপাদানটি শেষ উপাদানের পাশে আছে। এটি কিউ ইমপ্লিমেন্ট করতে ব্যবহৃত হয়। তাই আমাদের সেই অ্যারেতে সর্বোচ্চ সান্মুখ্য ১ বা ০ কাউন্ট করতে হবে।

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

ইনপুট - Arr[] = { 1,1,0,1,0,1,0,1,1,1 }

আউটপুট - সর্বোচ্চ সান্মুখ্য ১ হল ৫। অথবা সর্বোচ্চ সান্মুখ্য ০ হল ১।

ব্যাখ্যা - Arr[] ইনডেক্স ৭ থেকে ৯ এবং তারপর ইনডেক্স ০ এবং ১। ১-এর সংখ্যা ৫। কোনো সান্মুখ্য ০ নেই কিন্তু ১টি।

ইনপুট - Arr[] = { 0,0,0,1,0 }

আউটপুট - সর্বোচ্চ সান্মুখ্য ১ হল ১। অথবা সর্বোচ্চ সান্মুখ্য ০ হল ৪।

ব্যাখ্যা - Arr[] ইনডেক্স ৪ এবং তারপর ইনডেক্স ০ থেকে ৩। ০-এর সংখ্যা ৪।

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

  • ইনপুট Arr[] নেওয়া হয়েছে যেটে ০ এবং ১ র‍্যান্ডম অর্ডারে আছে।

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

  • Bit ভেরিয়েবল ব্যবহার করা হয়েছে ১ বা ০ সংরক্ষণের জন্য, যেটি অনুযায়ী আমরা কাউন্ট করব।

  • maxConsecutive(int arr[], int n, int bit) ফাংশন তিনটি ইনপুট নেয়। অ্যারেটা, এর আকার এবং ০ বা ১ বিট হিসেবে। ফেরত দেয় বিটের কাউন্ট।

  • অ্যারেটিকে সার্কুলার করার জন্য Temp[2*n] ব্যবহার করা হয়েছে arr[]-কে দুবার কপি করার জন্য। while() লুপ দুবার চলে arr[] কপি করার জন্য।

  • এখন while ( temp[k++]==bit ) ব্যবহার করে সান্মুখ্য ১ ( অথবা ০ ) কাউন্ট করুন এবং কাউন্ট 'count' ভেরিয়েবলে সংরক্ষণ করুন।

  • যদি এই কাউন্টটি এখনো সর্বোচ্চ হয়, তবে maxC-এ সংরক্ষণ করুন।

  • ফাইনাল রেজাল্ট হিসেবে maxC ফেরত দিন।

C++ প্রোগ্রাম উদাহরণ

#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; // 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. সি++-এ বাইনারি ট্রিতে সর্বোচ্চ последователь পথের দৈর্ঘ্য

  2. C++-এ Maximum Binary Tree II

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

  4. সর্বোচ্চ বাইনারি ট্রি নির্মাণ C++-এ