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

C++ STL-এ Next_Permutation বাস্তবায়ন: পরবর্তী পারমুটেশন

C++ STL-এ next_permutation ফাংশনটি একটি রেঞ্জের উপাদানগুলোকে লেক্সিকোগ্রাফিক্যালি বড় পারমুটেশন-এ পুনর্বিন্যাস করে। এটি বর্তমান পারমুটেশন থেকে ঠিক পরের পারমুটেশনে চলে যায়। সবচেয়ে ছোট পারমুটেশন (সর্টেড আরোহী ক্রম) থেকে শুরু করে সব পারমুটেশন জেনারেট করতে ব্যবহৃত হয়।

এলগরিদম

শুরু
  ইন্টিজার অ্যারে elements[] ঘোষণা করুন
  উপাদান সংখ্যা e ইনপুট নিন
  কীবোর্ড থেকে e সংখ্যক ডেটা দিয়ে elements[] ইনিশিয়ালাইজ করুন
  সব উপাদান সর্ট করুন (আরোহী ক্রমে - সবচেয়ে ছোট পারমুটেশন)
  দো-হোল লুপ:
    show(elements, e)  // বর্তমান পারমুটেশন দেখান
  যতক্ষণ (next_permutation(elements, elements + e))
শেষ

উদাহরণ কোড

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

void show(int a[], int n) {
    for (int i = 0; i < n; i++)
        cout << a[i] << " ";
    cout << endl;
}

int main() {
    int e, i;
    cout << "Enter number of elements to be inserted: ";
    cin >> e;
    int elements[e];

    for (i = 0; i < e; i++) {
        cout << "Enter " << i + 1 << " element: ";
        cin >> elements[i];
    }

    sort(elements, elements + e);  // আরোহী ক্রমে সাজানো (সর্বনিম্ন পারমুটেশন)

    cout << "The " << e << "! possible permutations with " << e << " elements:" << endl;

    do {
        show(elements, e);
    } while (next_permutation(elements, elements + e));

    return 0;
}

নমুনা আউটপুট (ইনপুট: 7, 6, 2, 10)

Enter number of elements to be inserted: 4
Enter 1 element: 7
Enter 2 element: 6
Enter 3 element: 2
Enter 4 element: 10
The 4! possible permutations with 4 elements:
2 6 7 10
2 6 10 7
2 7 6 10
2 7 10 6
2 10 6 7
2 10 7 6
6 2 7 10
6 2 10 7
6 7 2 10
6 7 10 2
6 10 2 7
6 10 7 2
7 2 6 10
7 2 10 6
7 6 2 10
7 6 10 2
7 10 2 6
7 10 6 2
10 2 6 7
10 2 7 6
10 6 2 7
10 6 7 2
10 7 2 6
10 7 6 2

মূল পার্থক্য: next_permutation-এ অ্যারেটি আরোহী ক্রমে (সর্টেড) থেকে শুরু করতে হয়, আর prev_permutation-এ নিম্নক্রমে (রিভার্স সর্টেড) থেকে। দুটোই false রিটার্ন করলে সমস্ত পারমুটেশন শেষ।

  1. C++ STL-এ Set Union বাস্তবায়ন: দুটি সেটের ইউনিয়ন

  2. C++ STL-এ Set Symmetric Difference বাস্তবায়ন

  3. C++ STL-এ Set Intersection বাস্তবায়ন: দুটি সেটের অন্তঃসেট

  4. C++ STL-এ Set Difference বাস্তবায়ন: সেট বিয়োগ