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

बाइनरी स्ट्रिंग को "ab" मुक्त बनाने के लिए आवश्यक संक्रियाओं की गणना करने का C++ प्रोग्राम

समस्या विवरण

हमें एक स्ट्रिंग दी गई है जिसमें "ab" पैटर्न हो सकता है। लक्ष्य "ab" को हटाने/मिटाने के लिए आवश्यक संक्रियाओं की संख्या ज्ञात करना है। प्रत्येक संक्रिया में "ab" को "bba" से प्रतिस्थापित किया जाता है। प्रक्रिया तब तक चलती है जब तक स्ट्रिंग "ab" मुक्त न हो जाए।

उदाहरण

इनपुट: str = "ababaa"

आउटपुट: 4

व्याख्या:

  1. "ababaa" → "bbaabaa" (पहला "ab" प्रतिस्थापित)
  2. "bbaabaa" → "bbabbaaa" (दूसरा "ab" प्रतिस्थापित)
  3. "bbabbaaa" → "bbbbaaaa" (तीसरा "ab" प्रतिस्थापित)
  4. "bbbbaaaa" → "ab" मुक्त, कुल 4 संक्रियाएँ

इनपुट: str = "abaa"

आउटपुट: 1

दृष्टिकोण

स्ट्रिंग को दाएँ से बाएँ पार करें। प्रत्येक 'b' के लिए एक काउंटर बढ़ाएँ। प्रत्येक 'a' के लिए, वर्तमान काउंटर मान को उत्तर में जोड़ें और काउंटर को दोगुना करें (क्योंकि प्रत्येक 'b' भविष्य के 'a' के लिए एक नया "ab" बनाएगा)।

एल्गोरिदम

  1. स्ट्रिंग लें और लंबाई की गणना करें
  2. प्रारंभिक count = 0, total = 0
  3. दाएँ से बाएँ लूप करें (इंडेक्स len-1 से 0):
    • यदि arr[i] == 'a': count += total; total *= 2
    • अन्यथा (यह 'b' है): total++
  4. count लौटाएँ

C++ कार्यान्वयन

#include <bits/stdc++.h>
using namespace std;

int operations_ab_free(string str, int len) {
    int count = 0;
    int total = 0;
    
    for (int i = len - 1; i >= 0; i--) {
        if (str[i] == 'a') {
            count += total;
            total *= 2;
        } else {
            total++;
        }
    }
    return count;
}

int main() {
    string str = "ababaa";
    int length = str.length();
    cout << "Count: " << operations_ab_free(str, length) << endl;
    return 0;
}

आउटपुट

Count: 4
  1. C++ में बाइनरी मैट्रिक्स को शून्य मैट्रिक्स में बदलने के लिए ऑपरेशनों की गिनती करने का प्रोग्राम C++ में बाइनरी मैट्रिक्स को शून्य मैट्रिक्स में बदलने के लिए ऑपरेशनों की गिनती करने का प्रोग्राम

    मान लीजिए हमारे पास एक बाइनरी मैट्रिक्स है। अब एक ऑपरेशन पर विचार करें जहां हम एक सेल लेते हैं और उसे और उसके सभी पड़ोसी सेल्स (ऊपर, नीचे, बाएं, दाएं) को फ्लिप करते हैं। हमें ऑपरेशनों की न्यूनतम संख्या ढूंढनी है जैसे कि मैट्रिक्स में केवल 0 हों। यदि कोई समाधान नहीं है, तो -1 वापस करें। तो, यदि इनप

  1. - C++ में N बाइनरी स्ट्रिंग्स का बिटवाइज OR

    इस समस्या में, हमें आकार n की बाइनरी स्ट्रिंग्स की एक सरणी bin[] दी गई है। हमारा कार्य n बाइनरी स्ट्रिंग्स का बिटवाइज OR (|) ज्ञात करने के लिए एक प्रोग्राम बनाना है। यहां, हम सभी संख्याओं को लेंगे और उनका बिटवाइज AND ढूंढेंगे यानी bin[0] | bin[1] |... bin[n-2] | bin[n] उदाहरण इनपुट - bin[] = {100

  1. C++ में ऊंचाई h के संतुलित बाइनरी ट्री की गणना C++ में ऊंचाई h के संतुलित बाइनरी ट्री की गणना

    हमें बाइनरी ट्री की ऊंचाई H दी गई है। लक्ष्य दी गई ऊंचाई के संतुलित बाइनरी ट्री की संख्या/गणना ज्ञात करना है। एक बाइनरी ट्री - एक ट्री डेटा संरचना है जिसमें प्रत्येक नोड के अधिकतम दो बच्चे होते हैं, जो बाएं बच्चे और दाएं बच्चे होते हैं। ऊंचाई-संतुलित बाइनरी ट्री - एक बाइनरी ट्री के रूप में परिभाषित