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

C++ প্রোগ্রাম: অ্যালেকজান্ডার বগোমোলনির আনঅর্ডারড পারমুটেশন অ্যালগরিদম বাস্তবায়ন (১ থেকে N এলিমেন্ট)


এটি ১ থেকে N এলিমেন্টের জন্য অ্যালেকজান্ডার বগোমোলনির আনঅর্ডারড পারমুটেশন অ্যালগরিদম বাস্তবায়ন করার একটি C++ প্রোগ্রাম।

অ্যালগরিদম

শুরু
  ফাংশন AlexanderBogomolny() অ্যালগরিদম বাস্তবায়ন করতে
  আর্গুমেন্ট:
    Val[] = একটি অ্যারে
    N = ইনপুট নেওয়া এলিমেন্ট সংখ্যা।
    K = লেভেল
  ফাংশনের বডি:
    l = -1 ইনিশিয়ালাইজ করুন
    l = l+1
    Val[k] = l
    যদি (l == N)
      ফাংশন display(Val, N) কল করুন
    অন্যথায়
      i = 0 থেকে N-1 পর্যন্ত
        যদি (Val[i] == 0)
          AlexanderBogomolny(Val, N, i) কল করুন
        l = l - 1
        Val[k] = 0
শেষ

উদাহরণ

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

void display(const int* n, const int size) // পারমুটেশন ডিসপ্লে
{
    int i;
    if (n != 0) {
        for (i = 0; i < size; i++) {
            cout << setw(4) << n[i];
        }
        cout << "\n";
    }
}

void AlexanderBogomolny(int* Val, int N, int k) {
    static int l = -1;
    int i;
    // শুরুতে, লেভেল ০ অ্যাসাইন করুন।
    l = l + 1;
    Val[k] = l;
    if (l == N)
        display(Val, N);
    else
        for (i = 0; i < N; i++)
            // ভ্যালু ০ হলে অ্যারেতে ভ্যালু অ্যাসাইন করুন।
            if (Val[i] == 0)
                AlexanderBogomolny(Val, N, i);
        // সেই লেভেলের সব সম্ভাব্য পারমুটেশন হওয়ার পর লেভেল ডিক্রিমেন্ট করুন।
        l = l - 1;
        Val[k] = 0;
}

int main() {
    int i, N, cnt = 1;
    cout << "Enter the value to permute first N natural numbers: ";
    cin >> N;
    int Val[N];
    for (i = 0; i < N; i++) {
        Val[i] = 0;
        cnt *= (i+1);
    }
    cout << "\nThe number of permutations possible is: " << cnt;
    cout << "\n\nPermutation using Alexander Bogomolyn's Algorithms \n";
    AlexanderBogomolny(Val, N, 0);
    return 0;
}

আউটপুট

Enter the value to permute first N natural numbers: 5 The number of permutations possible is: 120 Permutation using Alexander Bogomolyn's Algorithms 1 2 3 4 5 1 2 3 5 4 ... (বিশাল আউটপুট সংক্ষিপ্ত)

  1. সি++-এ অ্যালেকজান্ডার বোগোমলনি'র আনঅর্ডার্ড পারমিউটেশন অ্যালগরিদম

  2. সি++ প্রোগ্রাম: অপ্টিমাল পেজ রিপ্লেসমেন্ট অ্যালগরিদম

  3. C++-এ ক্যাডেনস অ্যালগরিদম (Kadane's Algorithm) ইমপ্লিমেন্টেশন

  4. C++-এ ভিজিনার সাইফার (Vigenere Cipher) ইমপ্লিমেন্টেশন