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

लंबाई N के कम से कम 3 लगातार 1s वाले बाइनरी स्ट्रिंग्स की संख्या खोजें C++ में

मान लीजिए, हमारे पास एक पूर्णांक N है, हमें लंबाई N के सभी संभावित अलग-अलग बाइनरी स्ट्रिंग्स की संख्या खोजनी है, जिनमें कम से कम तीन लगातार 1s हों। तो यदि n = 4, तो संख्याएं 0111, 1110, 1111 होंगी, इसलिए आउटपुट 3 होगा।

इसे हल करने के लिए, हम डायनामिक प्रोग्रामिंग दृष्टिकोण का उपयोग कर सकते हैं। तो DP(i, x) लंबाई i के स्ट्रिंग्स की संख्या दर्शाता है जिसमें स्थिति i+1 से i+x में x लगातार 1s हों। फिर पुनरावृत्ति संबंध इस तरह होगा -

DP(i, x) = DP(i – 1, 0) + DP(i – 1, x + 1)।

पुनरावृत्ति इस तथ्य पर आधारित है, कि या तो स्ट्रिंग में स्थिति i पर 0 या 1 मौजूद हो सकता है।

  • यदि इसमें ith इंडेक्स पर 0 है, तो (i-1)th स्थिति के लिए x का मान = 0
  • यदि इसमें ith इंडेक्स पर 1 है, तो (i-1)th स्थिति के लिए x का मान = 1 + स्थिति i पर x का मान

उदाहरण

#include <iostream>
using namespace std;

int n;
int numberCount(int i, int x, int table[][4]) {
    if (i < 0)
        return x == 3;
    if (table[i][x] != -1)
        return table[i][x];
    table[i][x] = numberCount(i - 1, 0, table);
    table[i][x] += numberCount(i - 1, x + 1, table);
    return table[i][x];
}

int main() {
    n = 4;
    int table[n][4];
    for (int i = 0; i < n; i++)
        for (int j = 0; j < 4; j++)
            table[i][j] = -1;
    for (int i = 0; i < n; i++) {
        table[i][3] = (1 << (i + 1));
    }
    cout << "The number of binary strings with at least 3 consecutive 1s: " << numberCount(n - 1, 0, table);
}

आउटपुट

The number of binary strings with at least 3 consecutive 1s: 3

  1. C++ में थ्रेशोल्ड दूरी पर सबसे कम पड़ोसियों वाला शहर ढूंढना C++ में थ्रेशोल्ड दूरी पर सबसे कम पड़ोसियों वाला शहर ढूंढना

    मान लीजिए n शहर हैं जो 0 से n-1 तक नंबरेड हैं। अगर हमारे पास ऐरे edges है जहां edges[i] = [fromi, toi, weighti] शहरों fromi और toi के बीच एक बाईडायरेक्शनल और वेटेड एज दर्शाता है, और दिया गया इंटीजर distanceThreshold है। हमें वह शहर ढूंढना है जिसमें उन शहरों की सबसे कम संख्या हो जो किसी पथ के माध्यम

  1. C++ में बाइनरी सर्च ट्री में न्यूनतम मान वाला नोड ज्ञात करें C++ में बाइनरी सर्च ट्री में न्यूनतम मान वाला नोड ज्ञात करें

    मान लीजिए हमारे पास एक बाइनरी सर्च ट्री है। हमें बाइनरी सर्च ट्री में न्यूनतम तत्व ढूंढना है। इसलिए यदि BST नीचे की तरह है: न्यूनतम तत्व 1 होगा। जैसा कि हम जानते हैं कि बायां उपट्री हमेशा छोटे तत्वों को धारण करता है। इसलिए यदि हम बाएं उपट्री के माध्यम से तब तक ट्रैवर्स करते हैं जब तक बायां NULL नही

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

    समस्या विवरण दी गई संख्या के बाइनरी प्रतिनिधित्व में सबसे लंबे लगातार 1 की लंबाई खोजें। उदाहरण इनपुट: n = 15 आउटपुट: 4 15 का बाइनरी प्रतिनिधित्व 1111 है। एल्गोरिदम संख्या इनपुट करें। एक काउंटर वेरिएबल c=0 का उपयोग करें। i=0 तक पहुंचने के लिए इटरेशन की संख्या गिनें। यह ऑपरेशन 1 के प्रत्येक अनुक्र