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

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

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

উদাহরণ

ইনপুট: string = "XYZ"
আউটপুট: XYZ XZY YXZ YZX ZYX ZXY

এই সমস্যাটি সমাধানের জন্য স্ট্রিংর একটি উপাদান ফিক্স করতে হবে। এবং তারপর স্ট্রিংর সব উপাদান দিয়ে ইটারেট করতে হবে।

বাস্তবায়ন

#include <string.h> 
#include <iostream> 
using namespace std; 

int compare(const void* a, const void* b) { 
    return (*(char*)a - *(char*)b); 
} 

void swapChar(char* a, char* b) { 
    char t = *a; 
    *a = *b; 
    *b = t; 
} 

int findCeil(char str[], char first, int l, int h) { 
    int ceilIndex = l; 
    for (int i = l + 1; i <= h; i++) 
        if (str[i] > first && str[i] < str[ceilIndex]) 
            ceilIndex = i; 
    return ceilIndex; 
} 

void printPermutations(char str[]) { 
    int size = strlen(str); 
    qsort(str, size, sizeof(str[0]), compare); 
    bool isFinished = false; 
    while (!isFinished) { 
        static int x = 1; 
        cout << str << "\t"; 
        int i; 
        for (i = size - 2; i >= 0; --i) 
            if (str[i] < str[i + 1]) 
                break; 
        if (i == -1) 
            isFinished = true; 
        else { 
            int ceilIndex = findCeil(str, str[i], i + 1, size - 1); 
            swapChar(&str[i], &str[ceilIndex]); 
            qsort(str + i + 1, size - i - 1, sizeof(str[0]), compare); 
        } 
    } 
} 

int main() { 
    char str[] = "SNGY"; 
    cout << "All permutations of the string" << str << " are :\n"; 
    printPermutations(str); 
    return 0; 
}

আউটপুট

All permutations of the string SNGY are :
GNSY GNYS GSNY GSYN GYNS GYSN NGSY NGYS NSGY NSYG NYGS NYSG SGNY SGYN SNGY SNYG SYGN SYNG YGNS YGSN YNGS YNSG YSGN YSNG
  1. C++-এ ডুপ্লিকেট থাকা স্ট্রিংয়ের ডিস্টিংক্ট সর্টেড পারমুটেশন প্রিন্ট করুন

  2. স্ট্রিং-এর সকল সাবস্ট্রিং প্রিন্ট (C++)

  3. দেওয়া রেঞ্জে প্যালিন্ড্রোম সংখ্যা প্রিন্ট (C++)

  4. দেওয়া স্ট্রিংয়ের সকল পারমিউটেশন প্রিন্ট করার পাইথন প্রোগ্রাম