প্রদত্ত স্ট্রিংগুলির অক্ষর যেকোন আকারে পুনর্বিন্যাস করা হলে একটি স্ট্রিংয়ের একটি স্থানান্তর গঠিত হয়। এই টিউটোরিয়ালে, আমরা আলোচনা করতে যাচ্ছি কিভাবে আমরা 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 ফাংশন এবং তাদের ব্যবহার শিখেছি। আমরা আশা করি আপনার এই টিউটোরিয়ালটি সহায়ক হবে৷