কম্পিউটার

STL ব্যবহার করে একটি প্রদত্ত স্ট্রিংয়ের C++ পারমুটেশন


প্রদত্ত স্ট্রিংগুলির অক্ষর যেকোন আকারে পুনর্বিন্যাস করা হলে একটি স্ট্রিংয়ের একটি স্থানান্তর গঠিত হয়। এই টিউটোরিয়ালে, আমরা আলোচনা করতে যাচ্ছি কিভাবে আমরা C++ এর স্ট্যান্ডার্ড টেমপ্লেট লাইব্রেরি ব্যবহার করে একটি প্রদত্ত স্ট্রিং-এর সমস্ত পারমুটেশন প্রিন্ট করতে পারি, উদাহরণস্বরূপ

Input : s = “ADT”

Output : “ADT”, “ATD”, “DAT”, “DTA”, “TAD”, “TDA”

Explanation : In the given output as you can see all the string are made up of same three character present in our string and are just rearranged thus they fit in the definition of a permutation of a string now there is one more thing to note these are all the permutations possible of string s.

দুটি পদ্ধতি আছে যার মাধ্যমে আমরা একটি প্রদত্ত স্ট্রিং এর সমস্ত পারমুটেশন প্রিন্ট করতে পারি

ঘোরান()

আমরা প্রথম যে পদ্ধতিটি ব্যবহার করতে যাচ্ছি তা হল রোটেট পদ্ধতি ব্যবহার করে। এই পদ্ধতিতে, আমরা STL-এর রোটেট ফাংশন ব্যবহার করব, যা আমাদের স্ট্রিং ঘোরাতে ব্যবহৃত হয়, এবং আমরা পারমুটেশন প্রিন্ট করার জন্য রিকারশন ব্যবহার করতে যাচ্ছি।

উদাহরণ

উপরের পদ্ধতির জন্য C++ কোড

#include<bits/stdc++.h>
using namespace std;
void permutations(string s, string ans){
    if(s.size() == 0) {
// when our string which needs to
//be rotated becomes empty then it means
//that our permutation is stored in ans
        cout << ans << "\n";
        return ;
    }
    for(int i = 0; i < s.size(); i++){
        permutations(s.substr(1), ans + s[0]);
        // we are adding the
        // first character in our ans
        // passing all elements from index 1 in our
        // rotate string for next function.
        rotate(s.begin(), s.begin()+1, s.end());
        //rotating such that our second element becomes first
    }
}
int main(){
    string s = "ADT"; // given string
    permutations(s, "");
    return 0;
}

আউটপুট

ADT
ATD
DTA
DAT
TAD
TDA

পরবর্তী_পারমুটেশন

এখন আমরা STL-এর আরেকটি ফাংশন ব্যবহার করব, নাম অনুসারে next_Permutation, এই ফাংশনের রিটার্ন টার্ন হল এই স্ট্রিংটির পরবর্তী পারমুটেশন বিদ্যমান কিনা। যদি না হয়, তাহলে এটি মিথ্যা ফেরত দেয়।

আপনি জানেন যে, এই ফাংশনটি পরবর্তী পারমুটেশন চেক করে; এইভাবে, আমাদের প্রথমে স্ট্রিংটিকে আভিধানিকভাবে সাজাতে হবে যাতে আমরা সমস্ত সম্ভাব্য স্থানান্তর পেতে পারি।

উদাহরণ

উপরের পদ্ধতির জন্য C++ কোড

#include<bits/stdc++.h>
using namespace std;
int main(){
    string s = "ADT"; // given string
    sort(s.begin(), s.end()); // sorting the string
    do{
        cout << s << "\n"; // printing the permutations
    }while(next_permutation(s.begin(), s.end())); // till next_permutations returns false
    return 0;
}
প্রদান করে

আউটপুট

ADT
ATD
DAT
DTA
TAD
TDA

উপরের প্রোগ্রামে, আমরা আমাদের স্ট্রিং বাছাই করি, এবং তারপর next_permutation ফাংশনের সাহায্যে, আমরা সম্ভাব্য সমস্ত পারমুটেশন প্রিন্ট করি।

উপসংহার

এই টিউটোরিয়ালে, আমরা C++-এ STL-এর সাহায্যে প্রদত্ত স্ট্রিং-এর সম্ভাব্য সমস্ত পারমুটেশন প্রিন্ট করি। আমরা এই সমস্যার জন্য C++ প্রোগ্রাম এবং কিছু প্রয়োজনীয় STL ফাংশন এবং তাদের ব্যবহার শিখেছি। আমরা আশা করি আপনার এই টিউটোরিয়ালটি সহায়ক হবে৷


  1. C++ এ STL ব্যবহার করে একটি অ্যারের সমস্ত বিপরীত ক্রমাগত?

  2. C++ STL ব্যবহার করে একটি প্রদত্ত পরিসরে মৌলিক সংখ্যা প্রিন্ট করুন

  3. একটি প্রদত্ত স্ট্রিং-এর পারমুটেশনের সংখ্যা খুঁজে পেতে C++ প্রোগ্রাম

  4. STL ব্যবহার করে C++ এ অ্যারে পণ্য