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

सी ++ में एक फ्लिप के साथ बाइनरी प्रतिनिधित्व में 1 का सबसे लंबा अनुक्रम खोजें


मान लीजिए कि हमारे पास एक पूर्णांक n है। उसके अंदर, हम 1s के सबसे लंबे अनुक्रम को उत्पन्न करने के लिए एक-बिट फ्लिप कर सकते हैं। मान लीजिए कि संख्या 13 है, तो द्विआधारी प्रतिनिधित्व 1101 है। यदि हम 0 से 1 के रूप में एक-बिट फ्लिप करते हैं, तो यह 1111 होगा। यह 1s का सबसे लंबा अनुक्रम है

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

उदाहरण

#include<iostream>
using namespace std;
int singleFlipMaxOnes(unsigned number) {
   if (~number == 0)
      return 8*sizeof(int);
   int curr = 0, prev = 0, max_size = 0;
   while (number!= 0) {
      if ((number & 1) == 1)
         curr++;
      else if ((number & 1) == 0) {
         prev = (number & 2) == 0? 0 : curr;
         curr = 0;
      }
      max_size = max(prev + curr, max_size);
      number >>= 1;
   }
   return max_size+1;
}
int main() {
   cout << "Maximum length of the sequence with 1s: " << singleFlipMaxOnes(13);
}

आउटपुट

Maximum length of the sequence with 1s: 4

  1. C++ में बाइनरी ट्री सबसे लंबे समय तक लगातार अनुक्रम

    मान लीजिए हमारे पास एक बाइनरी ट्री है; हमें यह जांचना होगा कि क्या हम सबसे लंबे क्रमागत अनुक्रम पथ की लंबाई ज्ञात कर सकते हैं। यदि पथ माता-पिता-बच्चे कनेक्शन के साथ पेड़ में किसी भी नोड से कुछ शुरुआती नोड से नोड्स के किसी अनुक्रम को संदर्भित करता है। माता-पिता से बच्चे तक लगातार सबसे लंबे रास्ते की

  1. C++ में दी गई संख्या का बाइनरी प्रतिनिधित्व

    एक बाइनरी नंबर एक संख्या है जिसमें केवल दो अंक 0 और 1 होते हैं। उदाहरण के लिए, 01010111। किसी दिए गए नंबर को बाइनरी रूप में दर्शाने के कई तरीके हैं। पुनरावर्ती विधि इस विधि का उपयोग किसी संख्या को उसके द्विआधारी रूप में प्रत्यावर्तन का उपयोग करके दर्शाने के लिए किया जाता है। एल्गोरिदम Step 1 : if

  1. C++ में एक पूर्णांक का पूरक खोजें

    इस भाग में, हम देखेंगे कि किसी पूर्णांक का 1 पूर्ण कैसे ज्ञात किया जाता है। हम इस कार्य को बहुत तेजी से करने के लिए पूरक ऑपरेटर का उपयोग कर सकते हैं, लेकिन यह 32 बिट पूरक मूल्य (4-बाईप पूर्णांक) बना देगा। यहाँ हम n बिट संख्याओं का पूरक चाहते हैं। मान लीजिए कि हमारे पास एक संख्या 22 है। बाइनरी समकक्