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

C++ में बाइनरी ऐरे को पार्टीशन करने के लिए न्यूनतम टॉगल (पहले 0s फिर 1s)


समस्या कथन

केवल 0 और 1 वाले n पूर्णांकों का एक ऐरे दिया गया है। न्यूनतम टॉगल (0 से 1 या इसके विपरीत स्विच) ढूंढें ताकि ऐरे पार्टीशन हो जाए, यानी, उसमें पहले 0s फिर 1s हों।

उदाहरण

यदि arr[] = {1, 0, 0, 1, 1, 1, 0} तो 2 टॉगल आवश्यक हैं यानी पहले 1 और अंतिम 0 को टॉगल करें।

एल्गोरिदम

  • यदि हम प्रश्न को देखें, तो हम पाएंगे कि 0 से n-1 तक निश्चित रूप से एक पॉइंट मौजूद होगा जहां उस पॉइंट के बाईं ओर के सभी एलिमेंट्स में सभी 0s होने चाहिए और दाईं ओर सभी 1s होने चाहिए
  • वे इंडेक्स जो इस नियम का पालन नहीं करते उन्हें हटाना होगा। विचार बाएं से दाएं सभी 0s को गिनना है।

उदाहरण

#include 
using namespace std;

int getMinToggles(int *arr, int n) {
    int zeroCnt[n + 1] = {0};
    for (int i = 1; i <= n; ++i) {
        if (arr[i - 1] == 0) {
            zeroCnt[i] = zeroCnt[i - 1] + 1;
        } else {
            zeroCnt[i] = zeroCnt[i - 1];
        }
    }
    int result = n;
    for (int i = 1; i <= n; ++i) {
        result = min(result, i - zeroCnt[i] + zeroCnt[n] - zeroCnt[i]);
    }
    return result;
}

int main() {
    int arr[] = {1, 0, 0, 1, 1, 1, 0};
    int n = sizeof(arr) / sizeof(arr[0]);
    cout << "Minimum toggles = " << getMinToggles(arr, n) << endl;
    return 0;
}

जब आप उपरोक्त प्रोग्राम को कंपाइल और 실행 करते हैं। यह निम्नलिखित आउटपुट उत्पन्न करता है -

आउटपुट

Minimum toggles = 2

  1. C++ में बाइनरी ट्री के उस स्तर को खोजें जिसका योग न्यूनतम है C++ में बाइनरी ट्री के उस स्तर को खोजें जिसका योग न्यूनतम है

    एक बाइनरी ट्री दिया गया है जहां रूट का स्तर 1 है। हमें वह सबसे छोटा स्तर X ढूंढना है जहां सभी नोड्स के मानों का योग न्यूनतम हो। उदाहरण ट्री में रूट 5 है, बाएं 4, दाएं -10, आदि। स्तर 2 का योग 4 + (-10) = -6 है, जो न्यूनतम है, इसलिए आउटपुट 2 है। समाधान दृष्टिकोण हम लेवल ऑर्डर ट्रैवर्सल (BFS) का उपयोग

  1. C++ में बाइनरी ट्री की न्यूनतम गहराई C++ में बाइनरी ट्री की न्यूनतम गहराई

    समस्या विवरण मान लीजिए हमारे पास एक बाइनरी ट्री है; हमें उस ट्री की न्यूनतम गहराई ज्ञात करनी है। जैसा कि हम जानते हैं, न्यूनतम गहराई रूट नोड से निकटतम लीफ नोड तक के सबसे छोटे पथ पर नोड्स की संख्या है। उदाहरण यदि इनपुट ट्री है: तो आउटपुट होगा 2 हल करने का दृष्टिकोण इस समस्या को हल करने के लिए निम

  1. - C++ में ऐरे में न्यूनतम संख्या जोड़कर योग को सम बनाना

    मान लीजिए एक ऐरे है जिसमें कुछ संख्याएं हैं। हमें बताना है कि न्यूनतम कितनी संख्याएं जोड़ने से तत्वों का योग सम हो जाएगा। संख्या 0 से बड़ी होनी चाहिए। इसलिए यदि तत्वों का योग विषम है, तो हम 1 जोड़ेंगे, लेकिन यदि योग पहले से सम है, तो हम 2 जोड़कर इसे सम बनाएंगे। एल्गोरिदम addMinNumber(arr) begin