কম্পিউটার

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++ এ একটি অনির্দেশিত গ্রাফে সমস্ত চক্র প্রিন্ট করুন

  2. C++ এ একটি স্ট্রিংয়ের সমস্ত প্যালিনড্রোম পারমুটেশন প্রিন্ট করুন

  3. C++-এ সাজানো (লেক্সিকোগ্রাফিক) ক্রমানুসারে সমস্ত স্থানান্তর মুদ্রণ করুন

  4. একটি প্রদত্ত স্ট্রিং এর সমস্ত সাবস্ট্রিং C++ এ প্রিন্ট করার জন্য প্রোগ্রাম