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

क्रमबद्ध क्रम में Nवीं बाइनरी स्ट्रिंग ज्ञात करें C++ में


इस समस्या में, हमें 1 की एक धनात्मक संख्या दी गई है। हमारा कार्य क्रमबद्ध क्रम में Nवीं बाइनरी स्ट्रिंग ज्ञात करना है।

हमें a और b केवल दो प्रतीकों का उपयोग करके बनाई गई स्ट्रिंग्स की अनंत सूची में Nवीं स्ट्रिंग ढूंढनी है जो शब्दकोश क्रम में क्रमबद्ध है।

सूची है -

a, b, aa, ab, ba, bb, aaa, aab, aba, …

उदाहरण से समझते हैं:

इनपुट: N = 8 आउटपुट: aab

समाधान दृष्टिकोण

समस्या का एक सरल समाधान लूप का उपयोग करके सभी n स्ट्रिंग्स उत्पन्न करना है। और फिर Nवीं स्ट्रिंग लौटाना। यह समाधान काम करता है लेकिन N के बड़े मान के मामले में प्रभावी समाधान प्रदान नहीं कर सकता।

इसलिए, हम एक और समाधान देखेंगे जो कम समय में समाधान प्रदान कर सकता है।

समस्या को हल करने का एक अन्य दृष्टिकोण स्ट्रिंग के लिए एक सापेक्ष इंडेक्स का उपयोग करना है। इस तथ्य का उपयोग करके कि 2 प्रतीकों का उपयोग करके लंबाई N की स्ट्रिंग्स की संख्या 2^N है। सापेक्ष इंडेक्स का उपयोग बाइनरी फॉर्म स्ट्रिंग ढूंढने के लिए किया जा सकता है।

          सापेक्ष इंडेक्स = N + 1 - 2( floor(log(N+1)) )

उदाहरण

हमारे समाधान के कार्य को दर्शाने वाला प्रोग्राम:

#include <bits/stdc++.h> using namespace std; #define ll long long int string findBinString(ll n){    ll len = (int)log2(n + 1);    int ri = n + 1 - pow(2, len);    ll i = 0;    string binString = "";    for (i = 0; i < len; i++) {       binString += 'a';    }    i = 0;    while (ri > 0) {       if (ri % 2 == 1)          binString[i] = 'b';       ri /= 2;       i++;    }    reverse(binString.begin(), binString.end());    return binString; } int main(){    ll n = 245;    cout<<"The "<<n<<"-th binary string in sorted order is "<<findBinString(n);    return 0; }

आउटपुट

The 245-th binary string in sorted order is bbbabba

  1. C++ में स्ट्रिंग के सबस्ट्रिंग्स की संख्या निकालना C++ में स्ट्रिंग के सबस्ट्रिंग्स की संख्या निकालना

    इस लेख में, आप एक दी गई स्ट्रिंग में बनने वाले सबस्ट्रिंग्स (गैर-खाली) की संख्या निकालने के दृष्टिकोण के बारे में जानेंगे।इनपुट: string = moon आउटपुट: 10 व्याख्या: सबस्ट्रिंग्स हैं m, o, o, n, mo, oo, on, moo, oon और moon। इनपुट: string = yellow आउटपुट: 21समाधान खोजने का दृष्टिकोणमान लें स्ट्रिंग की

  1. C++ में बाइनरी ट्री के प्रीऑर्डर ट्रैवर्सल में n-वां नोड ढूंढना C++ में बाइनरी ट्री के प्रीऑर्डर ट्रैवर्सल में n-वां नोड ढूंढना

    इस समस्या में, हमें एक बाइनरी ट्री और एक पूर्णांक N दिया जाता है। कार्य बाइनरी ट्री के प्रीऑर्डर ट्रैवर्सल में n-वां नोड ढूंढना है।एक बाइनरी ट्री में एक विशेष शर्त होती है कि प्रत्येक नोड के अधिकतम दो बच्चे हो सकते हैं।ट्रैवर्सल एक प्रक्रिया है जो ट्री के सभी नोड्स को विजिट करती है और उनके मान भी प्

  1. बाइनरी ट्री के वर्टिकल ऑर्डर ट्रैवर्सल में kवां नोड खोजें C++ में बाइनरी ट्री के वर्टिकल ऑर्डर ट्रैवर्सल में kवां नोड खोजें C++ में

    मान लीजिए हमारे पास एक बाइनरी ट्री और एक मान K है। कार्य वर्टिकल ऑर्डर ट्रैवर्सल में Kवें नोड को प्रिंट करना है। यदि ऐसा कोई नोड मौजूद नहीं है, तो -1 वापस करें। तो यदि ट्री नीचे जैसा है - वर्टिकल ऑर्डर ट्रैवर्सल इस तरह है - 4 2 1 5 6 3 8 7 9 तो यदि K = 3, तो परिणाम 1 होगा। दृष्टिकोण सरल है। हम वर्ट