কম্পিউটার

C++ এ লেক্সিকোগ্রাফিক ক্রমে পাওয়ার সেট


এই সমস্যায়, আমাদের স্ট্রিং স্ট্র দেওয়া হয়েছে। আমাদের কাজ হল এই স্ট্রিং এর উপাদানগুলির পাওয়ার সেটকে আভিধানিক ক্রমে প্রিন্ট করা৷

পাওয়ার সেট − একটি সেটের পাওয়ার সেট হল সেটের সমস্ত উপসেটের সেট। P(S) দ্বারা চিহ্নিত যেখানে s সেট।

উদাহরণ

S = {1, 2, 3} ;
p(S) = {{}, {1}, {1, 2}, {1, 3}, {2}, {2, 3}, {3}, {1,2,3}}

এই সমস্যায়, আমরা স্ট্রিংটিকে একটি সেট হিসাবে বিবেচনা করব। সুতরাং, এর অক্ষরগুলি সেটের উপাদান হবে।

সমস্যাটি বোঝার জন্য একটি উদাহরণ নেওয়া যাক

ইনপুট − str =“xyz”

আউটপুট − x xy xyz xz y yz z

এই সমস্যাটি সমাধান করার জন্য, আমাদের অ্যারে সাজাতে হবে, যাতে অভিধানের ক্রম পাওয়া যায়। তারপরে আমরা স্ট্রিংয়ের একটি উপাদান ঠিক করব এবং বাকি উপাদানগুলিকে বারবার কল করব যা সমস্ত সাবস্ট্রিং তৈরি করবে। এবং পরবর্তী পারমুটেশন পেতে প্রথম স্থির উপাদানটি বাতিল করুন।

উদাহরণ

আমাদের সমাধানের বাস্তবায়ন দেখানোর জন্য প্রোগ্রাম,

#include <bits/stdc++.h>
using namespace std;
void printAllSubsets(string str, int n, int index = -1, string subset = "") {
   if (index == n)
      return;
   cout<<subset<<"\n";
   for (int i = index + 1; i < n; i++) {
      subset+= str[i];
      printAllSubsets(str, n, i, subset);
      subset = subset.erase(subset.size() - 1);
   }
   return;
}
void GeneratePowerSet(string str) {
   sort(str.begin(), str.end());
   printAllSubsets(str, str.size());
}
int main() {
   string str = "xyz";
   cout<<"Power Set of the string '"<<str<<"' is :\n";
   GeneratePowerSet(str);
   return 0;
}

আউটপুট

Power Set of the string 'xyz' is:
x xy xyz xz y yz z

  1. C++ STL-এ insert() সেট করুন

  2. C++ STL-এ get_allocator() সেট করুন

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

  4. C++ STL এ মানচিত্র বনাম সেট করুন