Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

C++ . में बाइनरी सर्कुलर ऐरे में अधिकतम क्रमागत (या शून्य)

हमें एक गोलाकार सरणी के साथ दिया गया है। वृत्ताकार सरणी वह सरणी है जिसके लिए हम इस मामले पर विचार करते हैं कि पहला तत्व अंतिम तत्व के बगल में आता है। इसका उपयोग कतारों को लागू करने के लिए किया जाता है। इसलिए हमें अधिकतम संख्या गिननी होगी। उस सरणी में लगातार 1 या 0 का।

आइए उदाहरणों से समझते हैं।

इनपुट - अरे [] ={ 1,1,0,1,0,1,0,1,1,1 }

आउटपुट − अधिकतम क्रमागत 1 5 हैं। या अधिकतम क्रमागत 0 1 है।

स्पष्टीकरण − Arr[] इंडेक्स से 7 से 9 तक और फिर इंडेक्स 0 और 1. 1 से 5 होते हैं। कोई लगातार 0 नहीं बल्कि 1.

इनपुट - अरे [] ={ 0,0,0,1,0 }

आउटपुट - अधिकतम क्रमागत 1 is1 है। या अधिकतम क्रमागत 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[] को इसमें दो बार स्टोर करने के लिए किया जाता है। जबकि () लूप एआर [] को अस्थायी में कॉपी करने के लिए दो बार चलता है।

  • अब हम जबकि (temp[k++]==bit ) का उपयोग करके लगातार 1 (या 0) की गिनती करेंगे और लगातार गिनती को वेरिएबल 'काउंट' में स्टोर करेंगे।

  • यदि यह संख्या अब तक अधिकतम मिली है, तो इसे अधिकतम सी में संग्रहित करें।

  • अंतिम परिणाम के रूप में 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++ में अधिकतम बाइनरी ट्री II

    मान लीजिए कि हमारे पास अधिकतम पेड़ का रूट नोड है:अधिकतम पेड़ एक पेड़ है जहां प्रत्येक नोड का मूल्य उसके उपट्री में किसी भी अन्य मूल्य से अधिक होता है। मान लीजिए कि हमारे पास निर्माण () नामक एक विधि है। यह सूची ए से रूट बना सकता है। निर्माण() विधि इस तरह है - अगर सूची ए खाली है, तो शून्य लौटें।

  1. C++ में बाइनरी ट्री की अधिकतम चौड़ाई

    मान लीजिए कि हमारे पास एक बाइनरी ट्री है, हमें दिए गए ट्री की अधिकतम चौड़ाई प्राप्त करने के लिए एक फ़ंक्शन को परिभाषित करना होगा। यहां एक पेड़ की चौड़ाई सभी स्तरों के बीच अधिकतम चौड़ाई है। हम विचार करेंगे कि बाइनरी ट्री में पूर्ण बाइनरी ट्री के समान संरचना होती है, लेकिन कुछ नोड शून्य होते हैं। एक स

  1. C++ में अधिकतम बाइनरी ट्री

    मान लीजिए कि हमारे पास एक पूर्णांक सरणी है। उस सरणी के सभी तत्व अद्वितीय हैं। इस सरणी पर अधिकतम वृक्ष निर्माण को निम्नानुसार परिभाषित किया गया है - जड़ सरणी में अधिकतम संख्या धारण करेगा। लेफ्ट सबट्री सबएरे के बायीं ओर से निर्मित अधिकतम ट्री है जिसे अधिकतम संख्या से विभाजित किया जाता है। दाय