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

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

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

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

Input: str = ‘XYZ’
Output :
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++ में एक अप्रत्यक्ष ग्राफ में प्रिंट करें

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

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

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

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

    इस ट्यूटोरियल में, हम किसी दिए गए स्ट्रिंग के सभी सबस्ट्रिंग को प्रिंट करने के लिए एक प्रोग्राम पर चर्चा करेंगे। इसके लिए हमें एक स्ट्रिंग या वर्णों की एक सरणी दी जाएगी। हमारा काम उस विशेष स्ट्रिंग के सभी सबस्ट्रिंग को प्रिंट करना है। उदाहरण #include<bits/stdc++.h> using namespace std; //prin