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

C++ में पुनरावृत्त विधि (Iterative Method) का उपयोग करके स्ट्रिंग के सभी उपअनुक्रम (Subsequences) प्रिंट करें


इस समस्या में, हमें एक स्ट्रिंग दी गई है और हमें दी गई स्ट्रिंग से उपस्ट्रिंग ढूंढनी है। खोजी जाने वाली उपस्ट्रिंग को एक स्वर (vowel) से शुरू और व्यंजन (consonant) वर्ण से समाप्त होना चाहिए।

एक स्ट्रिंग वर्णों की एक सरणी है।

इस समस्या में उत्पन्न की जाने वाली उपस्ट्रिंग को स्ट्रिंग के कुछ वर्णों को हटाकर उत्पन्न किया जा सकता है। और स्ट्रिंग के क्रम को बदले बिना।

इनपुट: 'abc' आउटपुट: ab, ac, abc

इस समस्या को हल करने के लिए, हम स्ट्रिंग पर पुनरावृति करेंगे और स्वरों को फिक्स करेंगे और अगले अनुक्रम की जांच करेंगे। आइए समाधान खोजने के लिए एक एल्गोरिदम देखें -

एल्गोरिदम

चरण 1: वेरिएबल i के साथ स्ट्रिंग के प्रत्येक वर्ण पर पुनरावृति करें। चरण 2: यदि iवां वर्ण एक स्वर है। चरण 3: यदि jवां वर्ण एक व्यंजन है। चरण 4: हैशसेट में जोड़ें, 1वें वर्ण से jवें वर्ण तक की उपस्ट्रिंग। चरण 5: स्ट्रिंग से उपस्ट्रिंग ढूंढने के लिए निम्नलिखित चरणों को दोहराएं।

पुनरावृत्त दृष्टिकोण में, हम पूरी स्ट्रिंग पर पुनरावृति करेंगे। 1 से 2length(string) - 1 तक।

उदाहरण

#include <bits/stdc++.h> using namespace std; string subString(string s, int binary){    string sub = "";    int pos;    while(binary>0){       pos=log2(binary&-binary)+1;       sub=s[pos-1]+sub;       binary= (binary & ~(1 << (pos-1)));    }    reverse(sub.begin(),sub.end());    return sub; } void findAllSubStrings(string s){    map<int, set<string> > sorted_subsequence;    int len = s.size();    int limit = pow(2, len);    for (int i = 1; i <= limit - 1; i++) {       string sub = subString(s, i);       sorted_subsequence[sub.length()].insert(sub);    }    for (auto it : sorted_subsequence) {       for (auto ii : it.second)          cout<<ii<<" ";       cout<<"\t";    } } int main() {    string s = "wxyz";    cout<<"The substring are :\n";    findAllSubStrings(s);    return 0; }

आउटपुट

उपस्ट्रिंग है -

w x y z wx wy wz xy xz yz wxy wxz wyz xyz wxyz

  1. - C++ में स्ट्रिंग में सभी फनी वर्ड्स प्रिंट करना

    इस समस्या में, हमें एक वाक्य दिया गया है। हमारा कार्य वाक्य से उन सभी स्ट्रिंग्स को प्रिंट करना है जो फनी वर्ड्स हैं। फनी वर्ड फनी वर्ड वह शब्द है जो इस शर्त का पालन करता है - स्ट्रिंग के आसन्न कैरेक्टर्स और इसके रिवर्स स्ट्रिंग के बीच का निरपेक्ष अंतर समान होता है। |string[0] - string[1]| = |rev

  1. C++ में बाइनरी ट्री के सभी लीफ नोड्स को बाएं से दाएं इटरेटिव दृष्टिकोण से प्रिंट करना C++ में बाइनरी ट्री के सभी लीफ नोड्स को बाएं से दाएं इटरेटिव दृष्टिकोण से प्रिंट करना

    इस समस्या में, हमें एक बाइनरी ट्री दी गई है और हमें बाइनरी ट्री के सभी लीफ नोड्स को बाएं से दाएं इटरेटिव दृष्टिकोण का उपयोग करके प्रिंट करना है। उदाहरण इनपुट - आउटपुट - 1 4 7 इटरेटिव दृष्टिकोण का उपयोग करके इस समस्या को हल करने के लिए, हम डेप्थ-फर्स्ट सर्च (DFS) का उपयोग करेंगे। ट्री को पार करने

  1. C++ में DFS का उपयोग करके n-ary ट्री के सभी लीफ नोड्स प्रिंट करना C++ में DFS का उपयोग करके n-ary ट्री के सभी लीफ नोड्स प्रिंट करना

    इस समस्या में, हमें एक 2-D ऐरे दिया गया है जिसमें n-ary ट्री के एज होते हैं जहां एज n-ary ट्री के एज को परिभाषित करता है। हमें बने n-ary ट्री के सभी लीफ नोड्स प्रिंट करने हैं। n-ary ट्री n-ary ट्री एक ट्री है जिसमें अधिकतम n चाइल्ड होते हैं यानी एक नोड के 1, 2, ... n चाइल्ड नोड्स हो सकते हैं। उदा