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

C++ में संयोजित बाइनरी स्ट्रिंग में अधिकतम लगातार शून्य


मान लीजिए हमारे पास लंबाई n की एक बाइनरी स्ट्रिंग है, एक अन्य मान k दिया गया है। हमें बाइनरी स्ट्रिंग को k बार संयोजित करना है। फिर हमें संयोजित स्ट्रिंग में अधिकतम लगातार 0 की संख्या ढूंढनी है। मान लीजिए बाइनरी स्ट्रिंग "0010010" है, और k = 2, तो k बार स्ट्रिंग संयोजित करने के बाद, यह "00100100010010" हो जाएगी। तो अधिकतम लगातार 0 की संख्या 3 है।

दृष्टिकोण सरल है। यदि संख्या में सभी 0 हैं, तो उत्तर n * k होगा। यदि स्ट्रिंग में 1 हैं, तो परिणाम या तो स्ट्रिंग के केवल 0 वाले सबस्ट्रिंग की अधिकतम लंबाई होगी, या केवल 0 वाले स्ट्रिंग के अधिकतम प्रीफिक्स की लंबाई और केवल 0 वाले स्ट्रिंग के अधिकतम सफिक्स की लंबाई का योग होगी।

एल्गोरिदम

max_zero_count (str, n, k) −

शुरुआत total := 0 len := 0 i को 0 से n तक की रेंज के लिए करें    यदि str[i] = 0, तो len बढ़ाएं    अन्यथा len := 0    total := total और len का अधिकतम किया गया यदि total = n, तो n * k वापस करें prefix := केवल 0 वाले अधिकतम प्रीफिक्स की लंबाई suffix:= केवल 0 वाले अधिकतम सफिक्स की लंबाई यदि k > 1, तो    total := total और (prefix + suffix) का अधिकतम total वापस करें समाप्त

उदाहरण

#include <iostream> using namespace std; int max_length_substring(string str, int n, int k) {    int total_len = 0;    int len = 0;    for (int i = 0; i < n; ++i) {       if (str[i] == '0') //यदि वर्तमान कैरेक्टर 0 है, तो len बढ़ाएं          len++;       else          len = 0;       total_len = max(total_len, len);    }    if (total_len == n) //यदि पूरी स्ट्रिंग में केवल 0 हैं       return n * k;    int prefix = 0, suffix = 0;    for (int i = 0; str[i] == '0'; ++i, ++prefix) //केवल 0 वाले अधिकतम प्रीफिक्स की लंबाई ढूंढें;    for (int i = n - 1; str[i] == '0'; --i, ++suffix) //केवल 0 वाले अधिकतम सफिक्स की लंबाई ढूंढें;    if (k > 1)       total_len = max(total_len, prefix + suffix);    return total_len; } int main() {    int k = 3;    string str = "0010010";    int res = max_length_substring(str, str.length(), k);    cout << "0 की अधिकतम लंबाई: " << res; }

आउटपुट

0 की अधिकतम लंबाई: 3

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

    मान लीजिए हमारे पास एक बाइनरी ट्री है। हमें ट्री की अधिकतम चौड़ाई ढूंढनी है। एक लेवल की चौड़ाई उस लेवल के सबसे बाएँ और सबसे दाएँ नॉन-नल नोड्स के बीच की दूरी है (बीच के नल नोड्स भी गिने जाते हैं)। उदाहरण: ट्री [1,3,2,5,3,null,9] के लिए अधिकतम चौड़ाई 4 है (अंतिम लेवल [5,3,null,9] की लंबाई 4)। BFS +

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

    मान लीजिए हमारे पास एक पूर्णांक सरणी है जिसके सभी तत्व अद्वितीय हैं। एक अधिकतम बाइनरी ट्री निम्न नियमों से बनता है: रूट सरणी का अधिकतम तत्व होता है। बायाँ सबट्री अधिकतम तत्व के बाएँ भाग से बने सबसरणी का अधिकतम ट्री होता है। दायाँ सबट्री अधिकतम तत्व के दाएँ भाग से बने सबसरणी का अधिकतम ट्री होता है।

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

    इस समस्या में, हमें एक बाइनरी ट्री दिया गया है। हमारा कार्य एक प्रोग्राम बनाना है जो C++ में बाइनरी ट्री में अधिकतम स्पाइरल सम ढूंढेगा।बाइनरी ट्री का स्पाइरल सम  बाइनरी ट्री के स्पाइरल ट्रैवर्सल में मिलने वाले नोड्स का योग है।ट्री के स्पाइरल ट्रैवर्सल में, नोड्स को रूट से लीफ नोड तक ट्रैवर्स कि