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

C++ में लेक्सिकोग्राफिकल क्रम में स्ट्रिंग के सभी संयोजन (Combinations) प्रिंट करें


इस समस्या में, हमें स्ट्रिंग str दी गई है, और हमें स्ट्रिंग में वर्णों के सभी संयोजनों को लेक्सिकोग्राफिकल क्रम में प्रिंट करना है।

समस्या को बेहतर ढंग से समझने के लिए एक उदाहरण लेते हैं -

इनपुट: str = 'XYZ' आउटपुट: X XY XYZ XZ XZY Y YX YXZ YZ YZX Z ZX ZXY ZY ZYX

इस समस्या को हल करने के लिए, हम स्ट्रिंग में वर्णों के सभी संयोजन प्रिंट करेंगे। इसके लिए, हमें स्ट्रिंग के वर्णों को संग्रहीत करने के लिए एक मैप डेटा संरचना की आवश्यकता होगी। कार्यान्वयन के लिए, हमें सभी संयोजनों का ट्रैक रखने के लिए बैकट्रैकिंग का उपयोग करना होगा।

उदाहरण

#include <bits/stdc++.h> using namespace std; void printResult(char* result, int len); void findstringCombination(char result[], char str[], int count[],int level, int size, int length) ; void printCharCombination(string str); int main(){    string str = "ABC";    cout<<"The combination of characters of the string :\n";    printCharCombination(str);    return 0; } void findstringCombination(char result[], char str[], int count[],int level, int size, int length){    if (level == size)       return;    for (int i = 0; i < length; i++) {       if (count[i] == 0)          continue;       count[i]--;       result[level] = str[i];       printResult(result, level);       findstringCombination(result, str, count, level + 1, size, length);       count[i]++;    } } void printCharCombination(string str){    map<char, int> mp;    for (int i = 0; i < str.size(); i++) {       if (mp.find(str[i]) != mp.end())          mp[str[i]] = mp[str[i]] + 1;       else          mp[str[i]] = 1;    }    char* input = new char[mp.size()];    int* count = new int[mp.size()];    char* result = new char[str.size()];    map<char, int>::iterator it = mp.begin();    int i = 0;    for (it; it != mp.end(); it++) {       input[i] = it->first;       count[i] = it->second;       i++;    }    int length = mp.size();    int size = str.size();    findstringCombination(result, input, count, 0, size, length); } void printResult(char* result, int len){    for (int i = 0; i <= len; i++)       cout<<result[i];    cout<<endl; }

आउटपुट

स्ट्रिंग के वर्णों का संयोजन -

A AB ABC AC ACB B BA BAC BC BCA C CA CAB CB CBA

  1. C++ में अप्रत्यक्ष ग्राफ (Undirected Graph) में सभी चक्र (Cycles) प्रिंट करें C++ में अप्रत्यक्ष ग्राफ (Undirected Graph) में सभी चक्र (Cycles) प्रिंट करें

    इस समस्या में, हमें एक अप्रत्यक्ष ग्राफ दिया गया है और हमें ग्राफ में बने सभी चक्रों को प्रिंट करना है। अप्रत्यक्ष ग्राफ एक ग्राफ है जो एक साथ जुड़ा हुआ है। अप्रत्यक्ष ग्राफ के सभी किनारे द्विदिशात्मक हैं। इसे अप्रत्यक्ष नेटवर्क के रूप में भी जाना जाता है। चक्र ग्राफ डेटा संरचना में एक ग्राफ है जिसम

  1. - C++ में क्रमबद्ध (लेक्सिकोग्राफिक) क्रम में सभी क्रमपरिवर्तन प्रिंट करें

    इस समस्या में, हमें लंबाई n की एक स्ट्रिंग दी गई है और हमें स्ट्रिंग के वर्णों के सभी क्रमपरिवर्तन को क्रमबद्ध क्रम में प्रिंट करना है। समस्या को समझने के लिए एक उदाहरण लेते हैं : इनपुट: XYZ आउटपुट: XYZ, XZY, YXZ, YZX, ZXY, ZYX. यहां हमें सभी क्रमपरिवर्तन को लेक्सिकोग्राफिकल क्रम (वर्णमाला के बढ़ते

  1. - C++ में दिए गए स्ट्रिंग के सभी सबस्ट्रिंग प्रिंट करने का प्रोग्राम

    इस ट्यूटोरियल में, हम दिए गए स्ट्रिंग के सभी सबस्ट्रिंग प्रिंट करने के प्रोग्राम पर चर्चा करेंगे। इसके लिए हमें एक स्ट्रिंग या कैरेक्टर्स का ऐरे दिया जाएगा। हमारा कार्य उस विशेष स्ट्रिंग के सभी सबस्ट्रिंग प्रिंट करना है। उदाहरण #include using namespace std; // सभी सबस्ट्रिंग प्रिंट करना void pr