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

C++-এ ডুপ্লিকেট থাকা স্ট্রিংয়ের ডিস্টিংক্ট সর্টেড পারমুটেশন প্রিন্ট করুন

একটি স্ট্রিং দেওয়া আছে (যে সর্টেড অবস্থায় থাকতে পারে এবং ডুপ্লিকেট ক্যারেক্টর থাকতে পারে)। এর সব ডিস্টিংক্ট পারমুটেশন লেক্সিকোগ্রাফিক্যালি সর্টেড অর্ডারে প্রিন্ট করতে হবে।

উদাহরণ: "ABD" → ABD, ADB, BAD, BDA, DAB, DBA

ব্যাকট্র্যাকিং + سوয়াপ চেক
  • স্ট্রিং সর্টেড থাকলে পারমুটেশন জেনারেট করলেই সর্টেড অর্ডারে আসে।
  • সুয়াপ করার আগে চেক করুন যে ক্যারেক্টরটি ইতিমধ্যে সুয়াপ হয়েছে কিনা (ডুপ্লিকেট এড়াতে)।
উদাহরণ কোড
#include <bits/stdc++.h>
using namespace std;

bool swaper(char str[], int start, int curr) {
    for (int i = start; i < curr; i++)
        if (str[i] == str[curr]) return 0;
    return 1;
}

void printPermutations(char str[], int index, int n) {
    if (index >= n) {
        cout << str << "\t";
        return;
    }
    for (int i = index; i < n; i++) {
        bool check = swaper(str, index, i);
        if (check) {
            swap(str[index], str[i]);
            printPermutations(str, index + 1, n);
            swap(str[index], str[i]);
        }
    }
}

int main() {
    char str[] = "AABC";
    int n = strlen(str);
    cout << "The string is : " << str << endl;
    cout << "The distinct sorted permutations are : \t";
    printPermutations(str, 0, n);
    return 0;
}
আউটপুট
The string is : AABC
The distinct sorted permutations are : AABC AACB ABAC ABCA ACBA ACAB BAAC BACA BCAA CABA CAAB CBAA
  1. C++-এ জিগ-জ্যাগ স্ট্রিংকে n সারিতে কনক্যাটেনেট করুন

  2. C++-এ সর্টেড অ্যারেতে ডুপ্লিকেট থাকলে সমান বিন্দু (Equal/Middle Point) খুঁজে বের করা

  3. ডুপ্লিকেট অনুমতির সাথে অ্যারেতে ফিক্সড পয়েন্ট খুঁজে বের করা C++-এ

  4. স্ট্রিং-এর স্বতন্ত্র পারমিউটেশন প্রিন্ট করার জাভা প্রোগ্রাম