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

C/C++ में लगातार 1 के बिना बाइनरी स्ट्रिंग्स की संख्या गिनने का प्रोग्राम


समस्या विवरण

यहां हम एक दिलचस्प समस्या देखेंगे। मान लीजिए n का एक मान दिया गया है। हमें लंबाई n के सभी स्ट्रिंग्स ढूंढने हैं, जैसे कि कोई लगातार 1 न हों। यदि n = 2, तो संख्याएं {00, 01, 10} हैं, तो आउटपुट 3 है।

हम इसे डायनामिक प्रोग्रामिंग का उपयोग करके हल कर सकते हैं। मान लीजिए हमारे पास 'a' और 'b' टेबल हैं। जहां a[i] लंबाई i की बाइनरी स्ट्रिंग्स की संख्या संग्रहीत कर रहा है, जहां कोई लगातार 1 नहीं हैं, और 0 से समाप्त होती हैं। इसी तरह, b वही रखता है लेकिन संख्याएं 1 से समाप्त होती हैं। हम वहां 0 या 1 जोड़ सकते हैं जहां अंतिम 0 है, लेकिन केवल 0 जोड़ें यदि अंतिम 1 है।

एल्गोरिदम

noConsecutiveOnes(n)
शुरुआत
    आकार n के ऐरे a और b परिभाषित करें
    a[0] := 1
    b[0] := 1
    i को 1 से n तक लूप
        a[i] := a[i-1] + b[i-1]
        b[i] := a[i-1]
    अंत लूप
    वापस a[n-1] + b[n-1]
अंत

C++ प्रोग्राम उदाहरण

#include <iostream>
using namespace std;

int noConsecutiveOnes(int n) {
    int a[n], b[n];
    a[0] = 1;
    b[0] = 1;
    for (int i = 1; i < n; i++) {
        a[i] = a[i-1] + b[i-1];
        b[i] = a[i-1];
    }
    return a[n-1] + b[n-1];
}

int main() {
    cout << noConsecutiveOnes(4) << endl;
}

आउटपुट

8
  1. nवीं कैटलन संख्या (nth Catalan Number) के लिए C/C++ प्रोग्राम? nवीं कैटलन संख्या (nth Catalan Number) के लिए C/C++ प्रोग्राम?

    कैटलन संख्याएं (Catalan numbers) संख्याओं का एक अनुक्रम है। कैटलन संख्याएं प्राकृतिक संख्याओं का एक अनुक्रम बनाती हैं जो विभिन्न गणना समस्याओं में होती हैं, अक्सर पुनरावर्ती रूप से परिभाषित वस्तुओं से जुड़ी होती हैं। Cₙ लंबाई 2n के डाइक शब्दों (Dyck words) की संख्या है। एक डाइक शब्द n Xs और n Ys

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

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

  1. पायथन प्रोग्राम: लगातार 1 के बिना बाइनरी स्ट्रिंग्स की संख्या गिनें पायथन प्रोग्राम: लगातार 1 के बिना बाइनरी स्ट्रिंग्स की संख्या गिनें

    इस लेख में हम दी गई समस्या के समाधान के बारे में जानेंगे। समस्या कथन हमें एक धनात्मक पूर्णांक N दिया गया है, हमें लंबाई N की सभी संभावित अलग बाइनरी स्ट्रिंग्स गिननी हैं जिनमें लगातार 1 न हों। उदाहरण # स्ट्रिंग्स की संख्या गिनें def countStrings(n): a = [0 for i in range(n)] b = [0 for i in r