কম্পিউটার টিউটোরিয়াল

লেক্সিকোগ্রাফিক ক্রমে পাওয়ার সেট জেনারেট করা (C++)

এই সমস্যায় একটি স্ট্রিং দেওয়া আছে। স্ট্রিং-এর ক্যারেক্টারগুলোকে সেটের উপাদান বিবেচনা করে তার পাওয়ার সেট (সকল সাবসেট) লেক্সিকোগ্রাফিক ক্রমে প্রিন্ট করতে হবে।

পাওয়ার সেট

একটি সেটের পাওয়ার সেট হলো তার সকল সাবসেটের সেট। উদাহরণস্বরূপ, S = {1,2,3} হলে P(S) = {{}, {1}, {1,2}, {1,3}, {2}, {2,3}, {3}, {1,2,3}}।

উদাহরণ

ইনপুট: "xyz"

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

অ্যালগরিদম

  1. স্ট্রিংটি সর্ট করুন (লেক্সিকোগ্রাফিক ক্রমের জন্য)।
  2. রিকার্শন ব্যবহার করে প্রতিটি ক্যারেক্টার ফিক্স করে বাকি সাবস্ট্রিং জেনারেট করুন।
  3. প্রথম ক্যারেক্টার বাদ দিয়ে পরবর্তী পারমুটেশন পান।

C++ প্রোগ্রাম

#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.erase(subset.size() - 1);
    }
}

void GeneratePowerSet(string str) {
    sort(str.begin(), str.end());
    printAllSubsets(str, str.size());
}

int main() {
    string str = "xyz";
    cout << "স্ট্রিং '" << str << "' এর পাওয়ার সেট:\n";
    GeneratePowerSet(str);
    return 0;
}

আউটপুট

স্ট্রিং 'xyz' এর পাওয়ার সেট:
x
xy
xyz
xz
y
yz
z
  1. C++ STL-এ set::insert() ফাংশন

  2. C++ STL-এ set::get_allocator() ফাংশন

  3. সর্টেড (লেক্সিকোগ্রাফিক্যাল) অর্ডারে সব পারমুটেশন প্রিন্ট করা C++-তে

  4. C++ STL-এ Set vs Map পার্থক্য (Set vs Map in C++ STL)