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

C++ में एक फ्लिप के साथ बाइनरी प्रतिनिधित्व में 1s की सबसे लंबी सीक्वेंस ढूंढें


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

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

उदाहरण

#include 
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++ में बाइनरी ट्री लॉन्गेस्ट कंसिक्यूटिव सीक्वेंस - माता-पिता से बच्चा पथ C++ में बाइनरी ट्री लॉन्गेस्ट कंसिक्यूटिव सीक्वेंस - माता-पिता से बच्चा पथ

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

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

    बाइनरी संख्या बाइनरी संख्या केवल 0 और 1 अंकों से बनी होती है। पुनरावर्ती विधि पुनरावृत्ति का उपयोग करके संख्या को बाइनरी में बदलें: 1, तो संख्या/2 के साथ पुनरावर्ती कॉल करें वापस आते समय संख्या % 2 प्रिंट करें उदाहरण कोड 1) toBinary(number / 2); cout << number % 2; } int ma

  1. - C++ में इंटीजर का वन्स कॉम्प्लीमेंट खोजें

    इस सेक्शन में, हम देखेंगे कि इंटीजर का 1s कॉम्प्लीमेंट कैसे खोजें। हम कॉम्प्लीमेंट ऑपरेटर का उपयोग करके यह कार्य बहुत तेजी से कर सकते हैं, लेकिन यह 32-बिट कॉम्प्लीमेंटेड वैल्यू बनाएगा (4-बाइट इंटीजर)। यहां हम n-बिट नंबर्स का कॉम्प्लीमेंट चाहते हैं।मान लीजिए हमारे पास एक नंबर है जैसे 22। इसका बाइनरी