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

সি++-এ লেক্সিকোগ্রাফিকালি পরবর্তী পারমিউটেশন (Lexicographically Next Permutation)


এখানে আমরা দেখব কিভাবে সি++-এ একটি স্ট্রিং-এর লেক্সিকোগ্রাফিকালি পরবর্তী পারমিউটেশন জেনারেট করা যায়। লেক্সিকোগ্রাফিকালি পরবর্তী পারমিউটেশন বলতে বড় পারমিউটেশনকে বোঝায়। উদাহরণস্বরূপ, "ACB"-এর পরবর্তী হবে "BAC"। কিছু ক্ষেত্রে লেক্সিকোগ্রাফিকালি পরবর্তী পারমিউটেশন থাকে না, যেমন "BBB" বা "DCBA"।

সি++-এ আমরা লাইব্রেরি ফাংশন next_permutation() ব্যবহার করে এটি করতে পারি। এটি <algorithm> হেডার ফাইলে উপস্থিত।

উদাহরণ

#include <iostream>
#include <algorithm>
using namespace std;

int main() {
    string s = "DBAC";
    for (int i = 0; i < 5; i++) {
        bool val = next_permutation(s.begin(), s.end());
        if (val == false) {
            cout << "No next permutation" << endl;
            break;
        } else
            cout << "Next: " << s << endl;
    }
}

আউটপুট

Next: DBCA
Next: DCAB
Next: DCBA
No next permutation
  1. C++-এ পারমুটেশন সিকোয়েন্স (k-তম পারমুটেশন বের করা)

  2. C++-এ লিংকড লিস্ট পার্টিশন (Partition List)

  3. C++-এ অসুন্দর সংখ্যা (Ugly Number)

  4. পাইথনে नेक्स्ट পারমুটেশন